读书人

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

发布时间: 2012-03-16 16:34:56 作者: rapoo

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); 

读书人网 >VC

热点推荐