关于托盘右键菜单的有关问题

求教:关于托盘右键菜单的问题?
问题是这样的:
在托盘图标中点击右键,弹出了一个自定义菜单,如果这时候又不想操作菜单了,点击一下其他地方,菜单应该消失才对,但是为什么就是不消失呢?

这个右键菜单不消失,导致任务栏中的其他程序都不能点击右键了。

代码如下:
C/C++ code

void CCRCDlg::OnNotifyIcon(WPARAM wParam, LPARAM lParam)
{
    if ((wParam == IDR_MAINFRAME))
    {
                   if (lParam == WM_RBUTTONUP)
        {
            CPoint ptCur;
            GetCursorPos(&ptCur);

            CMenu popMenu;
            if(popMenu.CreatePopupMenu())
            {
                BOOL bIsShow = IsWindowVisible();
                popMenu.AppendMenu(MF_STRING | bIsShow ? MF_CHECKED : MF_UNCHECKED, IDC_SHOWSHOW, "显示");
                popMenu.AppendMenu(MF_STRING | bIsShow ? MF_UNCHECKED : MF_CHECKED, IDC_HIDESHOW, "隐藏");

                popMenu.AppendMenu(MF_SEPARATOR);

                popMenu.AppendMenu(MF_SEPARATOR);
                popMenu.AppendMenu(MF_STRING, IDOK, "退出");
                popMenu.SetDefaultItem(0);
                popMenu.TrackPopupMenu(TPM_LEFTALIGN,ptCur.x,ptCur.y,this);
            }

            popMenu.DestroyMenu();
        }
    }
}



------解决方案--------------------
在你if (lParam == WM_RBUTTONUP)语句中添加SetForegroundWindow();
我以前遇到过类似的问题,通过这解决的。。。可以试一下
------解决方案--------------------
那样要点击你的程序窗口才能消失!!试一下楼上的方法吧
------解决方案--------------------
同意一楼
------解决方案--------------------
SetForegroundWindow()这个是必须的。
------解决方案--------------------
探讨

引用:
SetForegroundWindow()这个是必须的。

解释一下原因,好吗?十分感谢!