visual c+教程(下)ppt

上传人:tia****nde 文档编号:72751807 上传时间:2019-01-24 格式:PPT 页数:224 大小:2.53MB
返回 下载 相关 举报
visual c+教程(下)ppt_第1页
第1页 / 共224页
visual c+教程(下)ppt_第2页
第2页 / 共224页
visual c+教程(下)ppt_第3页
第3页 / 共224页
visual c+教程(下)ppt_第4页
第4页 / 共224页
visual c+教程(下)ppt_第5页
第5页 / 共224页
点击查看更多>>
资源描述

《visual c+教程(下)ppt》由会员分享,可在线阅读,更多相关《visual c+教程(下)ppt(224页珍藏版)》请在金锄头文库上搜索。

1、第5章 菜单、工具栏和状态栏,5.1.1 文档应用程序的MFC类结构,用MFC AppWizard(exe)创建一个默认的单文档应用程序Ex_SDI,将项目工作区窗口切换到“ClassView(类视图)”页面,可以看到构成Ex_SDI 应用程序框架的MFC类结构,如图所示。再创建一个默认的多文档应用程序Ex_MDI,可以看到如图所示的MFC类结构。,5.1.2 项目的文件组织,Visual C+ 6.0中,项目中所有的源文件都采用文件夹的方 式进行管理的,每一个类的源代码均保存同名的h和cpp文件。,.opt 关于开发环境的参数文件,如工具格位置等信息 .aps(AppStudio File)

2、 资源辅助文件,二进制格式 .clw ClassWizard 信息文件 .dsp(DeveloperStudio Project) 项目文件 .plg 编译信息文件 .mdp(Microsoft DevStudio Project) 旧版本的项目文件 .bsc 用于浏览项目信息 .map 执行文件的映像信息纪录文件 .pch(Pre-Compiled File) 预编译文件,可以加快编译速度,但是文件非常大 .pdb(Program Database) 记录程序有关的一些数据和调试信息 .ncb 无编译浏览文件(no compile browser),5.1.2 项目的文件组织,还有相应的De

3、bug(调试)、Res(资源)等子文件夹。 程序项目Win32 Release版本,它与Release的区别在于:Debug版本的运行程序有相应的调试信息码,而Release版本的运行程序没有,但Release版本的运行程序经过代码的优化,其程序的运行效率被最大提升。 通过选择“编译”“放置可远行配置”菜单命令,在图所示的对话框中,选择“Ex_SDI-Win32 Release”,然后单击确定按钮,编译后即可。,5.2 菜单,Windows程序都有各自的菜单。为了使Windows程序更容易 操作,许多程序员对于菜单的设计都遵循下列一些规则:,若选择某菜单项会弹出一对话框,那么在该菜单项文本后

4、有“”。 (2) 若某项菜单有子菜单,那么在该菜单项文本后有“”。 (3) 若菜单项需要助记符,则用括号将带下划线的字母括起来。助记符与Alt构成一个组合键,当按住“Alt”键不放,再敲击(4) 该字母时,对应的菜单项就会被选中。,(4)若某项菜单需要快捷键的支持,则一般将其列在相应菜单项文本之后。所谓“快捷键”是一个组合键,如Ctrl+N,使用时是先按下“Ctrl”健不放,然后再按“N”键。任何时候按下快捷键,相应的菜单命令都会被执行,5.1.1 更改应用程序菜单,通过菜单编辑器直接修改菜单资源IDR_MAINFRAME可以实现添加和修改应用程序菜单,如下示例过程。 例Ex_MenuSDI

5、更改应用程序菜单 (1) 创建一个默认的单文档应用程序Ex_MenuSDI。 (2) 在项目工作区窗口中选择ResourceView页面,双击 资“Menu”项中的IDR_MAINFRAME,则菜单编辑器窗口 出现在主界面的右边,项目Ex_MenuSDI相应的菜单资 源在菜单编辑器窗口中显示出来。,(3) 按快捷键Ctrl+R,弹出“插入资源”对话框,在资源类型中选定“Menu”,如图,5.1.1 更改应用程序菜单,单击新建按钮,系统就会为应用程序添加一个新的菜单资源,并自动赋给它一个默认的标识符名称(第一次为DR_MENU1,以后依次为IDR_MENU2、IDR_MENU3、.),同时自动打

6、开这个新的菜单资源。,5.1.1 更改应用程序菜单,在Menu资源的ID_MENU1上右击鼠标,从弹出的快捷菜单中选择“Properties”命令,在这里可以重新指定菜单资源ID,设置菜单资源的语言和条件,这个条件用来决定菜单资源包含到哪个环境中,例如当指定条件为_DEBUG,则菜单资源只存在于Debug编译环境中。,5.1.1 更改应用程序菜单,在菜单的空位置上双击鼠标左键,则出现它的属性对话框。通过其属性对话框为菜单ID_MENU1添加一个顶层弹出菜单项“测试(&T)”,并在该菜单下添加一个子菜单项“返回(&R)”,ID设为ID_TEST_RETURN,需要再次强调的是,符号&用来指定后面

7、的字符是一个助记符。,(7) 打开Ex_MenuSDI程序菜单资源IDR_MAINFRAME,在“查看”菜单的最后添加一个子菜单项“显示测试菜单(&M)”,ID设为ID_VIEW_TEST。 (8) 为CMainFrame类添加一个CMenu类型的成员变量m_NewMenu,CMenu类是用来处理菜单的一个MFC类。,5.1.1 更改应用程序菜单,按快捷键Ctrl+W打开MFC ClassWizard对话框,切换到Message Maps页面,从“Class name”列表中选择CMainFrame,分别为菜单项ID_VIEW_TEST和ID_TEST_RETURN添加COMMAND消息映射,

8、使用默认的消息映射函数名,并添中下列代码:,void CMainFrame:OnViewTest() m_NewMenu.Detach(); / 使菜单对象和菜单句柄分离 m_NewMenu.LoadMenu( IDR_MENU1 ); SetMenu(NULL); / 清除应用程序菜单 SetMenu( ,5.2.2 使用键盘快捷键,加速键也往往被称为键盘快捷键,加速键也是一种资源,它的显示、编辑过程和菜单相似。 例如下面的示例过程是为前面两个菜单ID_VIEW_TEST和ID_TEST_RETURN定义键盘快捷键:先打开上例的项目工作区窗口中Accelerator的资源项,双击IDR_MA

9、INFRAME,出现如图的加速键资源列表。,5.2.2 使用键盘快捷键,(2) 建立一新的加速键,双击加速键列表的最下端的空行,弹出如图所示的“Accel Properities”对话框,可设置的属性如表所示 。,5.2.2 使用键盘快捷键,(3) 在上述对话框中,选择Ex_MenuSDI添加的“显示测试 菜单”菜单项ID_VIEW_TEST作为要联用的加速键的ID号,单 击下一键按钮,并按下Ctrl+1作为此加速键的键值。 (4) 按同样的方法,为菜单项ID_TEST_RETURN添加加 速键Ctrl+2。需要说明的是,为了使其他用户能查看并 使用该加速键,还需在相应的菜单项文本后面添加加

10、速键内容。例如,可将ID_VIEW_TEST菜单项的标题 改成“显示测试菜(&M)tCtrl+1”,其“t”是将后面的“Ctrl+1” 定位到一个表位。 (5) 编译运行并测试。当程序运行后,按“Ctrl+1”和“Ctrl+2 将执行相应的菜单命令。,5.2.3 菜单的编程控制,创建菜单 CMenu类的CreateMenu和CreatePopupMenu分别用来创建一个菜单或子菜单框架,它们的原型如下: BOOL CreateMenu( ); / 产生一个空菜单 BOOL CreatePopupMenu( ); / 产生一个空的弹出式子菜单 2. 装入菜单资源 将菜单资源装入应用程序中,需调用

11、CMenu成员函数LoadMenu,然后用SetMenu对应用程序菜单进行重新设置。 BOOL LoadMenu( LPCTSTR lpszResourceName ); BOOL LoadMenu( UINT nIDResource ); 其中,lpszResourceName为菜单资源名称,nIDResource为菜单资 源ID号。,5.2.3 菜单的编程控制,3. 添加菜单项 当菜单创建后,用户可以调用AppendMenu或InsertMenu 函数来添加一些菜单项。AppendMenu是将菜单项添加在菜单的末尾处,而InsertMenu在菜单的指定位置处插入菜单项,并将后面的菜单项依次

12、下移。,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, UI

13、NT nIDNewItem, const CBitmap* pBmp );,4.删除菜单项 调用DeleteMenu函数可将指定的菜单项删除,需要注意的是:调用该函数后,不管菜单依附的窗口是否改变,都应调用CWnd:DrawMenuBar使菜单更新。,5.2.3 菜单的编程控制,函数DeleteMenu的原型如下:,BOOL DeleteMenu( UINT nPosition, UINT nFlags ); 其中,参数nPosition表示要删除的菜单项位置,它由nFlags进行说明。若当nFlags为MF_BYCOMMAND时,nPosition表示菜单项的ID号,而当nFlags为MF_

14、BYPOSITION时,nPosition表示菜单项的位置(第一个菜单项位置为0)。,5. 获取菜单项 下面的四个CMenu成员函数分别获得菜单的项数、菜单项的 ID号、菜单项的文本内容以及弹出式子菜单的句柄。 UINT GetMenuItemCount( ) const; 该函数用来获得菜单的菜单项数,调用失败后返回-1。,UINT GetMenuItemID( int nPos ) const; 该函数用来获得由nPos指定菜单项位置(以0为基数)的菜单项的标识号,若nPos是SEPARATOR,则返回-1。,5.2.3 菜单的编程控制,int GetMenuString( UINT nI

15、DItem, CString 该函数用来获得指定菜单的弹出式菜单的菜单句柄。该弹出式菜单位置由参数nPos指定,开始的位置为0。若菜单不存在,则创建一个临时的菜单指针。,下面的示例过程是利用CMenu成员函数向应用程序菜单中添加并处理一个菜单项: 例Ex_Menu 菜单项的编程控制 (1) 创建一个默认的单文档应用程序Ex_Menu。,5.2.3 菜单的编程控制,选择“查看”菜单“Resource Symbols”命令, “资源符号”对话框,它能对应用程序中的资源标识符进行管理。 程序中添加的菜单项需要一个标识值,最好用一个标识符来代替这个值,因此这里通过“资源符号”对话框来创建一个新的标识符

16、。,5.2.3 菜单的编程控制,(3) 单击新建按钮,在名字(Name)框中输入一个新的标识符ID_NEW_MENUITEM。在值(Value)框中,输入该ID的值,系统要求用户定义的ID值应大于15(0X000F)而小于61440(0XF000)。保留默认的ID值101,单击确定按钮。 “New Symbol”对话框:,5.2.3 菜单的编程控制,(4) 关闭“资源符号”对话框,在CMainFrame:OnCreate函数中添加下列代码,该函数在框架窗口创建时自动调用。,int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct) . CMenu* pSysMenu = GetMenu(); / 获得程序菜单指针 CMenu* pSubMenu = pSysMenu-GetSubMenu(1); / 获得第二个子菜单的指针 CString Str

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号