VC实现动态菜单的创建方法
方法 实现 创建 动态 菜单 vc
2023-06-13 09:15:38 时间
本文简述了在程序不支持MFC,CMenu不可用的情况下,动态创建系统托盘菜单的方法。由于菜单项是不确定的,因而就需要用sdk创建一个动态弹出菜单。
主要实现代码如下:
//------------------codebegin---------------- //在类中定义的变量: //双击托盘图标时对应的菜单项id. UINTm_nDClickMenuItemId; //弹出菜单句柄. m_hMenum_hMenu; ///动态创建右键菜单项. ///@paramitem_text菜单项文本字符串,以逗号分隔. ///@paramdbclick_id双击托盘图标对应的菜单项id. //调用示例: //create_menu("显示/隐藏,退出",40001); BOOLCTrayIconMenu::create_menu(char*item_text,unsignedintdbclick_id) { m_nDClickMenuItemId=dbclick_id; //动态创建弹出菜单 m_hMenu=::CreatePopupMenu(); if(m_hMenu==NULL){ return0; } inti=0; intmsgid=40001;//第一项菜单项的消息id. BOOLret=0; char*pText=::strtok(item_text,","); while(pText!=NULL){ ret=::AppendMenu(m_hMenu,MF_ENABLED|MF_STRING,msgid+i,pText); pText=::strtok(NULL,","); i++; } return1; } ///响应消息显示菜单. LRESULTCTrayIconMenu::on_msg(WPARAMwid,LPARAMevent) { //一些其他处理代码... POINTmouse; ::GetCursorPos(&mouse); //hWnd为应用程序主窗口句柄. if(event==WM_RBUTTONUP){ ::SetForegroundWindow(hWnd); ::TrackPopupMenu(m_hMenu,0,mouse.x,mouse.y,0,hWnd,NULL); } return1; } //------------------codeend----------------
相关文章
- mybatis的逆向工程怎么实现_列举创建连接的方法
- 二叉树的层序遍历(两种方法实现)
- HTML5 FormData 方法介绍以及实现文件上传
- ICLR 2022 | DBD: 基于分割后门训练过程的后门防御方法
- php错误execution timed out (118.236064 sec), terminating解决方法详解编程语言
- Hibernate Query接口 setString方法:绑定映射类型为String的参数
- Linux实现中英文切换的简易方法(linux中英文切换)
- Linux下串口打印实现方法(linux串口打印)
- MySQL常见错误1005及解决方法(mysql错误1005)
- Oracle中多表联查创建视图的实现方法(oracle多表创建视图)
- Oracle 取前两位数据的实现方法(oracle取前两位)
- Linux下实现一步创建多级目录的方法(linux多级创建目录)
- MySQL实现两表数据相加的方法(mysql两表数据相加)
- 基于反射解决类复制的实现方法
- 解析Android应用启动后自动创建桌面快捷方式的实现方法
- 在C#中创建和读取XML文件的实现方法
- java实现创建缩略图、伸缩图片比例生成的方法
- ThinkPHP实现非标准名称数据表快速创建模型的方法
- PHP实现获取图片颜色值的方法
- C++实现寻找最低公共父节点的方法