Exemplo n.º 1
0
bool HwndSourceHookMenuPopup::HandleMouseMove(suic::MessageParameter& mp)
{
    bool handled = false;
    MenuPtr hotMenu = HitTestPopup();

    if (IsMouseCapture())
    {
        handled = true;

        if (!hotMenu)
        {
            if (_focusMenu)
            {
                suic::MouseEventArg ef(NULL, mp.point);
                _focusMenu->OnMouseLeave(ef);
            }

            _focusMenu = hotMenu;
        }
        else
        {
            suic::MouseEventArg e(hotMenu.get(), suic::SystemHelper::GetCursorPoint(hotMenu.get()));

            if (_focusMenu && _focusMenu != hotMenu)
            {
                suic::MouseEventArg ef(hotMenu.get(), mp.point);

                _focusMenu->OnMouseLeave(ef);
            }

            hotMenu->OnMouseMove(e);
            _focusMenu = hotMenu;
        }
    }
    else if (!hotMenu)
    {
        handled = true;
        suic::HwndHelper::HandleDefWndMessage(mp);
    }

    return handled;
}