使用CXTTrayIcon时,动态改变菜单项的方法

使用CXTTrayIcon时,动态改变菜单项的方法
在程序中使用了CXTTrayIcon,发现不能动态改变菜单项,如禁止/允许菜单项,修改菜单的文本等。
在看了CXTTrayIcon的源码后发现找到了两种解决的办法:
1.如果在对话框中直接使用了CXTTrayIcon变量,则要在对话框中增加消息处理函数
afx_msg LRESULT OnTrayNotification(WPARAM wParam, LPARAM lParam);

BEGIN_MESSAGE_MAP(CTrayIconTestDlg, CDialog)
 //{{AFX_MSG_MAP(CTrayIconTestDlg)
 //}}AFX_MSG_MAP
 ON_MESSAGE(TIN_XT_TRAYICON,OnTrayNotification)
END_MESSAGE_MAP()
LRESULT CTrayIconTestDlg::OnTrayNotification(WPARAM wParam, LPARAM lParam)
{
 switch(LOWORD(lParam)) {
 case WM_RBUTTONUP:
  {
   CMenu menu;
   if (!menu.LoadMenu(IDR_MENU1)) {
    return 0;
   }
   
   CMenu* pSubMenu = menu.GetSubMenu(0);
   if (pSubMenu == NULL) {
    return 0;
   }
  
   // Display the menu at the current mouse location. There's a "bug"
   // (Microsoft calls it a feature) in Windows 95 that requires calling
   // SetForegroundWindow. To find out more, search for Q135788 in MSDN.
   //
   CPoint pos;
   GetCursorPos(&pos);
   
   menu.EnableMenuItem(ID_MENUITEM_MENU1,MF_DISABLED|MF_GRAYED);
   menu.CheckMenuItem(ID_MENUITEM_MENU2,MF_CHECKED);
   ::TrackPopupMenu(pSubMenu->m_hMenu, 0, pos.x, pos.y,
    0,this->m_hWnd, NULL);
   
  
   menu.Detach();
   
  }
  break;
 }
 return TRUE;
}
注意的地方: 一定要返回TRUE,以避免CXTTrayIcon的处理;
   使用menu.EnableMenuItem(ID_MENUITEM_MENU1,MF_DISABLED|MF_GRAYED)禁止菜单项的时候,一定要注意加上MF_GRAYED
2.如果新建类CTrayIconEx继承自CXTTrayIcon的话,则可以覆盖CXTTrayIcon中的消息处理函数:
virtual afx_msg LRESULT OnTrayNotification(WPARAM wParam, LPARAM lParam);
其他处理同上

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、下4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、下4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、 4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值