读书人

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

发布时间: 2012-05-20 16:03:12 作者: rapoo

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

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

代码如下:

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()这个是必须的。

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

读书人网 >VC/MFC

热点推荐