当前位置: 代码迷 >> VC >> vc 9.0 系统托盘右键菜单有关问题
  详细解决方案

vc 9.0 系统托盘右键菜单有关问题

热度:4924   发布时间:2013-02-25 00:00:00.0
vc 9.0 系统托盘右键菜单问题
程序在系统托盘有图标显示,并且右键点击图标后有菜单出现。现有个问题:当右键点击系统托盘的图标后,出现的菜单必须响应菜单才能消失,如果不点击右键菜单中的某一项、点击其它位置菜单不会消失(正常情况应该是点击其它位置后,右键菜单会消失,如遨游等),请问应该如何修改代码?

实现右键菜单功能的代码为:
//右键弹出菜单
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);
  相关解决方案