您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 面向对象与可视化程序设计第12章
2020/2/61面向对象与可视化程序设计--VisualC++编程主讲教师:唐龙教授(计算机科学与技术系)黄维通博士(计算机与信息管理中心)清华大学2001年2月2020/2/62第十二章菜单类及其应用2020/2/63内容提要菜单类简介菜单类控件的应用2020/2/64§12.1.菜单类简介2020/2/65,,1.菜单菜单是用户与应用程序交互的最常用手段。菜单存放在资源脚本中,在程序运行时调用。一个菜单项必须包含两部分:–菜单项名称——字符串构成,如file–菜单项标识符ID——整数值,可用整数常量表示菜单标识符ID在资源的头文件Resource.h中定义,前缀IDM指明是菜单项,如:#defineIDM_MENU1129在菜单资源,必须链接到类中,通过提供类方法来处理每个菜单项。2020/2/66IDR_MENU1MENUDISCARDABLEBEGINPOPUP&File//定义File菜单BEGIN//菜单File定义开始MENUITEM&Voice,IDC_VOICE_MENU//菜单项MENUITEM&Show,IDC_SHOW_MENU//菜单项MENUITEMSEPARATOR//分隔线MENUITEM&Exit,IDC_EXIT_MENU//菜单项END//菜单File定义结束POPUP&Help//定义Help菜单BEGIN//菜单Help定义开始MENUITEM&About,IDC_ABOUT_MENU//菜单项END//菜单Help定义结束END2.菜单结构菜单模板用一种很简单的结构在资源脚本文件中定义,一个菜单资源模板实例如下:2020/2/673.CMenu类CMenu类是Cobject类直接派生的。CMenu类提供了许多处理菜单和菜单项的方法:–构造方法;–菜单操作方法;–菜单项操作方法;–虚拟方法。2020/2/683.CMenu类(续)构造方法用于建立Windows菜单,并在运行时将它们附加到CMenu对象上,表12-1CMenu的构造方法方法说明Attach()把一个标准的Windows菜单句柄附加到CMenu对象上CreateMenu()创建一个空菜单并把它附加到CMenu对象上CreatePopupMenu()创建一个弹出式菜单并把它附加到CMenu对象上DeleteTempMap()删除由FromHandle()构造函数创建的任何临时CMenu对象DestroyMenu()去掉附加到CMenu对象上的菜单并释放该菜单占有的任何内存Deatch()从CMenu对象上拆开Windows菜单句柄并返回该句柄FromHandle()当给定Windows菜单句柄时,返回CMenu对象指针GetSafeHmenu()返回由CMenu对象封装的菜单句柄成员(m_hMenu)LoadMenu()从可执行文件装入菜单资源并把它附到Cmenu对象上LoadMenuIndirect()从内存中的菜单模板中装入菜单并把它附到CMenu对象上2020/2/693.CMenu类(续)菜单操作方法用于处理菜单的顶层操作,只有两个方法:–DeleteMenu()删除指定的菜单项(包括附属的级连菜单项);–TrackPopupMenu()在一个指定的位置显示一个快捷菜单。2020/2/6103.CMenu类(续)菜单操项作方法有多种用于处理指定菜单项操作2020/2/611§12.2.菜单类编程实例2020/2/6121.应用程序的实现功能主窗口标题为ApplicationofMenu。有三个按钮:Voice、Show和Exit。有两个菜单:File和Help。File下拉出三个菜单项:Voice、Show和Exit。单击Vioce选项,可听到PC机喇叭发出蜂鸣声单击Show,则弹出对话框,显示信息“ThisisaSampleofaddingmenu”。单击Exit,则退出。2020/2/613主窗口布局如下图;2020/2/6142.编程过程建立工程文件:用MFCAppWizard(exe)–工程项目名称:Menu–建立主窗口标题为ApplicationofMenu的应用程序。可视化编程:–设计界面–连接变量–修改特性–添加代码2020/2/6153.界面设计在Menu的工作区中选择ResourceView在名为IDD_MENU_DIALOG的对话框作为应用程序的主窗口中进行界面设计。对话框中按钮的设计–借助于工具窗,在主窗口中安排三个命令按钮。–在命令按钮上单击右键,选Propertires–在PuchButtonPropertires的General上,输入相应的ID和Caption–重复三次,完成了三个按钮的设计。2020/2/6163.界面设计(续)设计的三个按钮属性对象IDCaption命令按钮IDC_VOICE_BUTTON&Voice命令按钮IDC_SHOW_BUTTON&Show命令按钮IDC_EXTT_BUTTON&Exit2020/2/617(a)InsertResource对话框(b)选择Menu项(c)单击按钮New,加一菜单资源对话框中菜单的设计–插入资源Insert-Resource,显示nsertResource对话框–在资源列表选择Menu项–单击按钮New,在资源文件Menu.rc中增加一项菜单资源。2020/2/6184.给菜单连接一个类作为一个对象,菜单必须与一个类连接。这个菜单是对话框中的一个资源,将它与对话框的派生类CMenuDlg相连接。菜单IDR_MENU1连接了一个类,可调用该类的成员函数和成员变量。2020/2/6195.连接菜单和应用程序的主窗口为了在主窗口中显示菜单,菜单还应连接主窗口。菜单与主窗口对话框(即IDD_MENU_DIALOG)的连接:在Menu的工作区的ResourceView选项卡中,双击Dialog文件夹中的IDD_MENU_DIALOG,弹出IDD_MENU_DIALOG对话框。在对话框内,单击鼠标右键,在快捷菜单中选择Properties命令,在对话框中的Menu组合框中选择IDD_MENU12020/2/620(1)给菜单File的Exit选项编写代码voidCMenuDlg::OnExitMenu(){OnOK();}6.应用程序的代码编程(2)给File菜单的Voice项连接代码voidCMenuDlg::OnVioceMenu(){MessageBeep((WORD)-1);DWORDiTime=GetCurrentTime()while(GetCurrentTime()iTime+500)MessageBeep((WORD)-1);//间隔500毫秒,发出一声蜂鸣}2020/2/621(3)给File菜单的Show项连接代码voidCMenuDlg::OnShowMenu(){MessageBox(”Thisissampleofaddingamenu.”);}(4)给Help菜单的About项连接代码voidCMenuDlg::OnAboutMeenu(){MessageBox(”Thisisasample.”);}2020/2/622(5)给命令按钮连接代码voidCmenudlg::OnVioceButton(){OnVioceMenu();}voidCMenuDlg::OnShowButton(){OnShowMenu();}voidCMenuDlg::OnExitButton(){OnExitMenu();}2020/2/623(第十二章)完2020/2/624第12章课后练习题编写一个程序,对每组4个元素的10组数据进行管理,用下拉菜单操作实现功能包括:输入修改数据;显示一组数据;对一组数据求:最大值;最小值;平均值;均方差;[注]5月14日前完成
本文标题:面向对象与可视化程序设计第12章
链接地址:https://www.777doc.com/doc-3526600 .html