(一)菜单命令的路由
1.响应菜单项命令的顺序依次是:视类、文档类、框架类,最后是应用程序类。
2.Windows消息的分类
- 标准消息:除WM_COMMAND之外,所有以WM_开头的消息都是标准消息。从CWnd派生的类都可以接收到这类消息。
- 命令消息:来处菜单、加速键或工具栏按钮的消息。这类消息以WM_COMMAND的形式呈现。通过其ID来区分。
- 通告消息:由控件产生的消息。其也以WM_COMMAND形式呈现。
3.CWnd类派生于CCmdTarget类,凡是从CWnd类派生的类,它们既可以接标准消息,也可以接收命令消息和通告消息。而从 CCmdTargt派生的类,则只能接收命令消息和通告消息,不能接收标准消息。
4.菜单命令的路由的具体过程:当点击某个菜单项是地,最先接收到这个菜单命令消息的是框架类。框架类把接收到的这个消息交给它的子窗口,即视类,由视类首先进行处理。视类首先根据命令消息映射机制查找自身是否对此消息进行了响应,如果响应了,就调用相应响应函数对这个消息进行处理,消息路由过程结束;如果视类没有对这个消息做出响应,就交给文档类,文档类如果能处理就处理,路由结束,不能处理就交还给视类,再由视类交还给框架类。框架类如果能处理就处理,路由结束,如果不能处理,就交给应用程序类,由它来处理。
(二)基本菜单操作
1.实现标记菜单(在CMainFrame类的OnCreate函数最后添加代码):
在【文件】子菜单中的【新建】菜单项实现
或:
2.实现默认菜单项:(在【文件】子菜单下的【打开】实现)
或:
一个子菜单只能有一个默认菜单项。
3.图形标记菜单:
首先,在CMainFrame类添加一个CBitmap类型的成员变量,m_bitmap.
在OnCreate函数中添加:
当然,得先创建一个IDB_BITMAP的位图资源,并且这幅位图不能太大,否则无法全部显示出来,具体多大可以通过 GetSystemMetrics函数得到图形标记菜单上显示的位图的尺寸。
......