首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VC >

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

2012-03-16 
vc 9.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); 

热点排行