当前位置:文档之家› 工具栏和状态栏.ppt

工具栏和状态栏.ppt


5.1.1 更改应用程序菜单
按快捷键Ctrl+W打开MFC ClassWizard对话框,切换到Message Maps页 面,从“Class name”列表中选择CMainFrame,分别为菜单项 ID_VIEW_TEST和ID_TEST_RETURN添加COMMAND消息映射,使用 默认的消息映射函数名,并添中下列代码:
(4) 按同样的方法,为菜单项ID_TEST_RETURN添加加 速键Ctrl+2。需要说明的是,为了使其他用户能查看并 使用该加速键,还需在相应的菜单项文本后面添加加 速键内容。例如,可将ID_VIEW_TEST菜单项的标题 改成“显示测试菜(&M)\tCtrl+1”,其“\t”是将后面的“Ctrl+1” 定位到一个表位。
browser)
5.1.2 项目的文件组织
还有相应的Debug(调试)、Res(资源)等子文件夹。 程序项目Win32 Release版本,它与Release的区别在于:Debug版 本的运行程序有相应的调试信息码,而Release版本的运行程序没有, 但Release版本的运行程序经过代码的优化,其程序的运行效率被最 大提升。 通过选择“编译”“放置可远行配置”菜单命令,在图所示的对话 框中,选择“Ex_SDI-Win32 Release”,然后单击[确定]按钮,编译 后即可。
5.2.2 使用键盘快捷键
(2) 建立一新的加速键,双击加速键列表的最下端的空行,弹出如图所示 的“Accel Properities”对话框,可设置的属性如表所示 。
项目
ID
Modifiers Type Key 下一键(Next Key
Typed)
含义 指定资源ID号的列表项,为了能和菜单联用,通常选择
CMenu* GetSubMenu( int nPos ) const; 该函数用来获得指定菜单的弹出式菜单的菜单句柄。该弹出 式菜单位置由参数nPos指定,开始的位置为0。若菜单不存在, 则创建一个临时的菜单指针。
下面的示例过程是利用CMenu成员函数向应用程序菜单中添 加并处理一个菜单项: [例Ex_Menu] 菜单项的编程控制
(5) 编译运行并测试。当程序运行后,按“Ctrl+1”和 “Ctrl+2 将执行相应的菜单命令。
5.2.3 菜单的编程控制
1.创建菜单
CMenu类的CreateMenu和CreatePopupMenu分别用来创建一个菜
单或子菜单框架,它们的原型如下:
BOOL CreateMenu( );
// 产生一个空菜单
(1) 创建一个默认的单文档应用程序Ex_Menu。
5.2.3 菜单的编程控制
(2)选择“查看”菜单“Resource Symbols…”命令, “资源 符号”对话框,它能对应用程序中的资源标识符进行管理。
程序中添加的菜单项需要一个标识值,最好用一个标识符来 代替这个值,因此这里通过“资源符号”对话框来创建一个新 的标识符。
}
void CMainFrame::OnTestReturn()
{
m_NewMenu.Detach();
m_NewMenu.LoadMenu( IDR_MAINFRAME );
SetMenu(NULL);
SetMenu( &m_NewMenu );
}
5.2.2 使用键盘快捷键
加速键也往往被称为键盘快捷键,加速键也是一种资源,它的显示、编 辑过程和菜单相似。 例如下面的示例过程是为前面两个菜单ID_VIEW_TEST和 ID_TEST_RETURN定义键盘快捷键:先打开上例的项目工作区窗口中 Accelerator的资源项,双击IDR_MAINFRAME,出现如图的加速键资源 列表。
5. 获取菜单项 下面的四个CMenu成员函数分别获得菜单的项数、菜单项的 ID号、菜单项的文本内容以及弹出式子菜单的句柄。
UINT GetMenuItemCount( ) const; 该函数用来获得菜单的菜单项数,调用失败后返回-1。
UINT GetMenuItemID( int nPos ) const; 该函数用来获得由nPos指定菜单项位置(以0为基数)的菜单项 的标识号,若nPos是SEPARATOR,则返回-1。
第5章 菜单、工具栏和状态栏
5.1.1 文档应用程序的MFC类结构
用MFC AppWizard(exe)创建一个默认的单文档应用程序Ex_SDI,将 项目工作区窗口切换到“ClassView(类视图)”页面,可以看到构成 Ex_SDI 应用程序框架的MFC类结构,如图所示。再创建一个默认的 多文档应用程序Ex_MDI,可以看到如图所示的MFC类结构。
5.1.1 更改应用程序菜单
在菜单的空位置上双击鼠标左键,则出现它的属性对话框。通过其属性对 话框为菜单ID_MENU1添加一个顶层弹出菜单项“测试(&T)”,并在该菜 单下添加一个子菜单项“返回(&R)”,ID设为ID_TEST_RETURN,需要 再次强调的是,符号&用来指定后面的字符是一个助记符。
5.2 菜单
Windows程序都有各自的菜单。为了使Windows程序更容易 操作,许多程序员对于菜单的设计都遵循下列一些规则:
(1)若选择某菜单项会弹出一对话框,那么在该菜单项文本后 有“…”。
(2) 若某项菜单有子菜单,那么在该菜单项文本后有“”。
(3) 若菜单项需要助记符,则用括号将带下划线的字母括起来。 助记符与Alt构成一个组合键,当按住“Alt”键不放,再敲击(4) 该字母时,对应的菜单项就会被选中。 (4)若某项菜单需要快捷键的支持,则一般将其列在相应菜单 项文本之后。所谓“快捷键”是一个组合键,如Ctrl+N,使 用时是先按下“Ctrl”健不放,然后再按“N”键。任何时候按 下快捷键,相应的菜单命令都会被执行
BOOL CreatePopupMenu( );
// 产生一个空的弹出式子调用CMenu成员函数LoadMenu, 然后用SetMenu对应用程序菜单进行重新设置。
BOOL LoadMenu( LPCTSTR lpszResourceName ); BOOL LoadMenu( UINT nIDResource ); 其中,lpszResourceName为菜单资源名称,nIDResource为菜单资 源ID号。
某菜单项的ID号
用来确定Ctrl、Alt、Shift是否是构成加速键的组成部分
用来确定该加速键的值是虚拟键(VirKey)还是ASCII 是指启动加速键的键盘按键
单击此按钮后,用户操作的任何按键将成为此加速键的 键值
5.2.2 使用键盘快捷键
(3) 在上述对话框中,选择Ex_MenuSDI添加的“显示测试 菜单”菜单项ID_VIEW_TEST作为要联用的加速键的ID号,单 击[下一键]按钮,并按下Ctrl+1作为此加速键的键值。
5.2.3 菜单的编程控制
3. 添加菜单项
当菜单创建后,用户可以调用AppendMenu或InsertMenu 函数来添加一 些菜单项。AppendMenu是将菜单项添加在菜单的末尾处,而InsertMenu在菜 单的指定位置处插入菜单项,并将后面的菜单项依次下移。
BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0,LPCTSTR l pszNewItem = NULL ); BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp ); BOOL InsertMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL ); BOOL InsertMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );
(3) 按快捷键Ctrl+R,弹出“插入资源”对话框,在资源类型中选 定“Menu”,如图
5.1.1 更改应用程序菜单
单击[新建]按钮,系统就会为应用程序添加一个新的菜单资源,并自 动赋给它一个默认的标识符名称(第一次为DR_MENU1,以后依次为 IDR_MENU2、IDR_MENU3、...),同时自动打开这个新的菜单资源。
信息文件 项目文件 编译信息文件 旧版本的项目文件 用于浏览项目信息 执行文件的映像信息纪录文件
.pch(Pre-Compiled File)
预编译文件,可以加快编译速度,但是文件非常大
.pdb(Program Database)
记录程序有关的一些数据和调试信息
.ncb
无编译浏览文件(no compile
4.删除菜单项
调用DeleteMenu函数可将指定的菜单项删除,需要注意的是:调用该 函数后,不管菜单依附的窗口是否改变,都应调用CWnd::DrawMenuBar使 菜单更新。
5.2.3 菜单的编程控制
函数DeleteMenu的原型如下:
BOOL DeleteMenu( UINT nPosition, UINT nFlags ); 其中,参数nPosition表示要删除的菜单项位置,它由nFlags进 行说明。若当nFlags为MF_BYCOMMAND时,nPosition表示 菜单项的ID号,而当nFlags为MF_BYPOSITION时,nPosition 表示菜单项的位置(第一个菜单项位置为0)。
5.1.1 更改应用程序菜单
通过菜单编辑器直接修改菜单资源IDR_MAINFRAME可以实现添加和 修改应用程序菜单,如下示例过程。 [例Ex_MenuSDI] 更改应用程序菜单
(1) 创建一个默认的单文档应用程序Ex_MenuSDI。 (2) 在项目工作区窗口中选择ResourceView页面,双击 资“Menu”项 中的IDR_MAINFRAME,则菜单编辑器窗口 出现在主界面的右边,项 目Ex_MenuSDI相应的菜单资 源在菜单编辑器窗口中显示出来。
相关主题