程序在系统托盘有图标显示,并且右键点击图标后有菜单出现。现有个问题:当右键点击系统托盘的图标后,出现的菜单必须响应菜单才能消失,如果不点击右键菜单中的某一项、点击其它位置菜单不会消失(正常情况应该是点击其它位置后,右键菜单会消失,如遨游等),请问应该如何修改代码?
实现右键菜单功能的代码为:
//右键弹出菜单
CMenu menu_bar;
menu_bar.LoadMenu(IDR_MENU); //资源中已有的菜单
CMenu* file_menu = menu_bar.GetSubMenu(0);
ASSERT(file_menu);
LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);//得到鼠标位置
file_menu->TrackPopupMenu(TPM_LEFTALIGN |TPM_RIGHTBUTTON, lpoint->x,lpoint->y,this);
//资源回收
HMENU hmenu=menu_bar.Detach();
menu_bar.DestroyMenu();
delete lpoint;
lpoint = NULL;
------解决方案--------------------------------------------------------
下面是我的代码,没有遇到你说的问题,你看下有什么不同吧
- C/C++ code
CMenu menu; if(!menu.LoadMenu(IDR_MENU_TRATICON_POUPUP)) return 0; CMenu* pSubMenu = menu.GetSubMenu(0); if(!pSubMenu) return 0; //使菜单第一项为缺省项(表现为粗体) ::SetMenuDefaultItem(pSubMenu->m_hMenu,0,TRUE); //在鼠标的当前位置弹出菜单 CPoint mouse; GetCursorPos(&mouse); SetForegroundWindow(); TrackPopupMenu(pSubMenu->m_hMenu,0,mouse.x,mouse.y,0,m_hWnd,NULL);