如何让CMenu弹出菜单消失?

and*_*dre 3 c++ mfc visual-studio-2010 windows-7

我的应用程序在系统托盘中有一个弹出菜单。我遇到的问题是,如果不选择某个项目,我无法让菜单消失。

当我单击窗口中的其他位置时,如何使弹出菜单消失?

这是使弹出菜单出现的代码:

LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
    if( message == WM_MYMESSAGE && lParam == WM_RBUTTONDOWN)
    {
        m_menu.CreatePopupMenu();        
        POINT point;

        GetCursorPos(&point);
        m_menu.AppendMenu(MF_POPUP, WM_MAXIMIZE, _T("Maximize"));
        m_menu.AppendMenu(MF_POPUP, WM_EXIT, _T("Exit"));
        m_menu.TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y, this);

    }
    return CDialog::WindowProc(message, wParam, lParam);
}
Run Code Online (Sandbox Code Playgroud)

我尝试过使用CMenu::DestroyMenu但没有运气。

and*_*dre 5

对我有用的解决方案是SetForegroundWindow();在调用之前调用该函数TrackPopupMenu

我在函数说明的备注中找到了解决方案TrackPopupMenu