VC++MFC第6章 菜单、工具栏和状态栏.ppt
文本预览下载声明
第6章菜单、工具栏和状态栏 6.1 菜单 6.2 工具栏 6.3 状态栏 第6章菜单、工具栏和状态栏 6.1 菜单 6.2 工具栏 6.3 状态栏 6.1菜单 (1 of 11) 对于菜单的显示都遵循下列一些规则: 若某菜单项标题后有“…”,那么在点击某菜单项会弹出一对话框。 若某项菜单有子菜单,那么在该菜单项文本后有“?”。 菜单项需要助记符,用括号将带下划线的字母括起来。助记符与Alt构成一个组合键,当按住“Alt”键不放,再敲击该字母时,对应的菜单项就会被选中。 若某项菜单需要快捷键的支持,则一般将其列在相应菜单项文本之后。任何时候按下快捷键,相应的菜单命令都会被执行。 6.1菜单 (2 of 11) 6.1.1 用编辑器设计菜单 编辑菜单 在菜单的空位置上双击鼠标左键,则出现它的属性对话框,如图。 6.1菜单 (3 of 11) 6.1菜单 (4 of 11) 需要注意的是: 当菜单项的属性中选中了Pop_up(该菜单包含子菜单)时,对话框中ID、Separator和Prompt项无效。 增加新的菜单项后,用户可以用鼠标将菜单项拖到其他位置,而当菜单项位置改变时,其属性并不改变。 6.1菜单 (5 of 11) 菜单命令的消息映射 [例Ex_Mmenu] “成绩输入”菜单项的映射。 (1) 进入MFC ClassWizard对话框,切换到Message Maps页面。 (2) 从“Class name”列表中选择CMainFrame,在IDs列表中选择ID_SCORE_IN,然后在Messages框中选择COMMAND消息,如图。 6.1菜单 (6 of 11) (3) 单击[Add Function]按钮或双击COMMAND消息,输入成员函数的名称。如图6.7所示。 (4) 单击[OK]。选择新增加的成员函数,单击[Edit Code]按钮(或直接在函数名双击鼠标左键),就可以在此成员函数中添加一些代码。例如: void CMainFrame::OnScoreIn() { // TODO: Add your command handler code here AfxMessageBox(现在就输入成绩吗?); } (5)编译并运行。在应用程序的顶层菜单上,单击“成绩输入”菜单项或按Alt+S组合键,如图6.8所示。 6.1菜单 (7 of 11) 6.1.2 使用键盘快捷键 (1) 先打开上例的项目工作区窗口中Accelerator的资源项,双击IDR_MAINFRAME,如图。 6.1菜单 (8 of 11) (2) 要建立一新的加速键,双击加速键列表的最下端的空行,如图6.10,其中可设置的属性如表6.2。 (3) 在上述对话框中,选择ID_SCORE_IN作为要设定快捷键的ID号,单击[Next Key Typed],按下Ctrl+1作为此加速键的键值。 6.1菜单 (9 of 11) 6.1.3 使用快捷菜单——右键菜单 用资源编辑器和MFC库的CMenu::TrackPopupMenu函数可以创建快捷菜单。CMenu::TrackPopupMenu函数原型如下: BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL ); 其中: x和y表示菜单顶端(一般为左上角)的水平坐标和垂直坐标。 pWnd表示弹出菜单的窗口。 lpRect是一个RECT结构或CRect对象指针,表示一个矩形区域,不在该区域单击鼠标时,则弹出菜单消失;当lpRect为NULL时,若击在菜单外面,菜单立刻消失。 6.1菜单 (10 of 11) [例Ex_Menu]创建弹出菜单。 (1) 选择“Insert”菜单?“Resource”命令,为应用程序添加一个新的菜单资源。 (2) 用菜单编辑器,为该菜单资源中的顶层菜单的第一项加一任意标题(实际上该标题无任何作用),在此菜单项下依次添加如下表所示的菜单项。 (3) 将此菜单资源ID号改为IDR_MYFLOATMENU (默认的ID号为 IDR_MENU1) 。 (4) 按Ctrl+W快捷键打开ClassWizard,将出现一对话框,询问是“选择一个已存在的类”,还是“创建一个新类”。选择“选择一个已存在的类”项并选定CMainFrame类。 6.1菜单 (11 of 11) (5) 在CMainFrame类中,选择上表中所列的菜单ID,双击COMMAND消息。这里仅为菜单ID_MENU_SCOREIN映射COMMAND消息,添加代码: void CMainFrame:
显示全部