第六章、菜单
1. 默认顶层菜单为弹出式菜单,这种菜单不能响应命令。
菜单命令响应函数的添加
先添加菜单资源,有了菜单资源ID后,用类向导,找到框架类,在消息中选中COMMAND,
然后添加一个响应函数。
2. C**app类和 C**doc类都不是从cwnd类派生的,所以他们没有Messagebox成员函数,
我们可以使用全局的MessageBox函数,或者使用应用程序框架函数AfxMessageBox
3. 响应菜单项命令的顺序依次是:视类、文档类、框架类,最后才是应用程序类;
4. Windows消息的分类:1.标准消息(除了WM_COMMAND之外的消息);
2.命令消息:WM_COMMAND消息,MFC中,通过菜单项的ID来区分不同的命名消息;在SDK中,通过消息的wParam参数识别;
3.通告消息:由控件产生的消息;
5. CWnd类实际上派生于CCmdTarget类,所以,凡是从CWnd派生的类,它们既可以接受标准消息,也可以接受命令消息和通告消息;而从CCmdTarget派生的类,则只能接受命令消息和通告消息;
文档类和应用程序类都派生于CCmdTarget类,所以不接收标准消息类;
6. 标记菜单
在OnCreate函数的最后面添加这一句;
GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION| MF_CHECKED);
7. 默认菜单项(比较黑的字体)
GetMenu()->GetSubMenu(0)->SetDefaultItem(1,TRUE);//1表示位置,从0开始第一项