菜单(不完全版)
来源:互联网 发布:centos wingide 安装 编辑:程序博客网 时间:2024/05/17 02:37
总结下这几天学习的菜单知识:(附上快捷键使用方法)
1.
创建菜单方法:
这个不说了。
动态添加菜单:
CWnd和它的子类们有个方法SetMenu
函数原型:
BOOL SetMenu( CMenu* pMenu );
这里有CMenu类。说下它的使用方法
上代码吧:
切忌SetMenu后要调用CMenu的Detach方法
MSDN对它的解释:
Detaches a Windows menu from a CMenu object and returns the handle.
RemarksThe m_hMenu data member is set to NULL.
2.
pop-up menu(皖译:弹出式菜单) 的创建
要用到CMenu的一个方法:GetSubMenu
这个比较好理解。直接给函数原型:
CMenu* GetSubMenu( int nPos //Specifies the position of the pop-up menu contained in the menu. Position values start at 0 for the first menu item. ) const
右键会接受到一个通知:
WM_CONTEXTMENU
MSDN解释:
The WM_CONTEXTMENU message notifies a window that the user clicked the right mouse button (right-clicked) in the window.
呵呵。就是在右键窗口时通知的...
在处理这个通知时创建pop-up menu即可。
用刚GetSubMenu返回的一个CMenu *调用方法TrackPopupMenu
函数原型:
BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = 0);
¥¥VS2008小技巧一个:因为MSDN并没有CWnd里对应的那个函数文档,所以需要到CWnd的头文件里查找(函数名为:OnContextMenu)
快捷键使用方法:
资源里添加先。
因为CWnd没有添加对快捷键的支持(CFrameWnd支持),所以如果我们自己定义的窗口类继承于CWnd,需要
自己添加快捷键支持;
步骤:
1.在类中添加一个类型为HACCEL 的数据成员。
2.用API函数LoadAccelerators 返回值对它进行初始化或者复制。
3.重写一个虚函数PreTranslateMessage。返回值为TranslateAccelerator 的返回值;
TranslateAccelerator 原型:
HACCEL hAccTable, LPMSG lpMsg);int TranslateAccelerator(
HWND hWnd,
这样就可以了。想用什么快捷键添加消息映射项和处理消息的函数的声明和定义即可。
- 菜单(不完全版)
- c++2048(不完全版)
- iceWM配置总结帖(不完全版)
- 不完全版天气查询
- 八大排序不完全版
- [转贴]编程词汇不完全手册(英中对照版)
- 编程词汇不完全手册(英中对照版)
- TSQL与PL/SQL的比较(不完全版)
- TSQL与PL/SQL的比较(不完全版)
- FastCGI 不完全高级指南(PHP版,Windows平台)
- SIFT 不完全手册(第二季)讨论版
- Java面试资料简单整理(不完全版)
- BCB版聚不完全记录
- 人生钻石【不完全版】呼呼
- 南方精良系统-不完全版
- 正则总结 - 不完全深入版
- 不完全类型(Partial Types)
- 笔记:委托、事件(不完全)
- 杀软组合
- 主程序与DLL之间的全局变量问题
- HTML常用标签
- 80 咱们变老了
- 键盘妙用 史上最全
- 菜单(不完全版)
- hdu acm1013
- ORA-01407: cannot update to null 错误解决
- struts1 和 struts2中的validate
- 胆小的借口
- VC个性化窗口界面设计
- 向雨林木风 linux叫声好
- 教你使用dos命令扫描开放端口
- Code::Blocks 满足你任何苛刻的要求的C/C++ IDE