孙鑫MFC学习笔记6:菜单编程
1.对菜单响应的顺序:
视类,文档类,框架类,应用程序类
2.消息的分类
3.CWnd继承自CCmdTarget类,
所以从CWnd派生出的类也可以接收WM_COMMAND消息
4.命令的消息路由
5.GetMenu获取指向菜单栏的指针
6.GetSubMenu获取指向子菜单的指针
7.CheckMenuItem设置复选菜单
8.SetDefaultItem设置缺省菜单项
9.分隔栏也要计算索引位置
10.一个子菜单中只有一个菜单项作为缺省菜单
11.SetMenuItemBitmaps设置菜单项位图
12.GetSystemMetrics获取系统信息
13.EnableMenuItem设置菜单禁用(要设置m_bAutoMenuEnable=false)、
14.SetMenu设置菜单栏
要用Detach分离
15.命令更新
16.OnContextMenu、TrackPopupMenu增加右键菜单(视类)
菜单显示是以屏幕坐标为标准
17.ClientToScreen转客户区坐标为屏幕坐标
18.AppendMenu 动态增加菜单项
19.CreatePopupMenu添加一个空的弹出菜单
20.InsertMenu插入菜单
21.DeleteMenu删除菜单
22.动态增加菜单的命令响应
*1.在Resource.h中定义命令ID
*2.可将动态增加时取的ID改为命令ID宏
*3.在头文件中增加响应函数声明(格式为 afx_msg void 函数名(); )
*4.源文件中加消息映射(末尾没有分号)(格式为 消息(ID,响应函数) )
*5.在源文件中加函数实现(没有afx_msg)
23.程序中动态增加的菜单需要窗口重绘才能显示
24.DrawMenuBar菜单栏重绘(CMainFrame中)
25.Invalidate窗口重绘(用于擦除窗口临时文字)
26.Find查找字符串
27.CStringArray字符串数组(Add,GetAdd,GetSize...)
28.覆盖OnCommand截获消息
注意:要设置m_bAutoMenuEnable=false
29.LOWORD,HIWORD获取高低字节序值
30.GetActiveView获取当前视类指针