面向对象和可视化程序设计VisualC编程菜单类及其应用_第1页
面向对象和可视化程序设计VisualC编程菜单类及其应用_第2页
面向对象和可视化程序设计VisualC编程菜单类及其应用_第3页
面向对象和可视化程序设计VisualC编程菜单类及其应用_第4页
面向对象和可视化程序设计VisualC编程菜单类及其应用_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象与可视化程序设计 -Visual C+ 编程1第十二章菜单类及其应用2022/7/162内容提要菜单类简介菜单类控件的应用2022/7/16312.1.菜单类简介2022/7/1641.菜单菜单是用户与应用程序交互的最常用手段。菜单存放在资源脚本中,在程序运行时调用。一个菜单项必须包含两部分:菜单项名称字符串构成,例如:file菜单项标识符ID整数值,可用整数常量表示菜单标识符ID在资源的头文件中定义,前缀IDM指明是菜单项,如:#define IDM_MENU1 129在菜单资源,必须链接到类中,通过提供类方法来处理每个菜单项。2022/7/165,2. 菜单结构菜单模板用一种很简单

2、的结构在资源脚本文件中定义,一个菜单资源模板实例如下:2022/7/166IDR_MENU1 MENU DISCARDABLE BEGIN POPUP &File /定义File菜单 BEGIN /菜单File定义开始 MENUITEM &Voice, IDC_VOICE_MENU /菜单项 MENUITEM &Show, IDC_SHOW_MENU /菜单项 MENUITEM SEPARATOR /分隔线 MENUITEM &Exit, IDC_EXIT_MENU /菜单项 END /菜单File定义结束 POPUP &Help /定义Help菜单 BEGIN /菜单Help定义开始 MEN

3、UITEM &About, IDC_ABOUT_MENU /菜单项 END /菜单Help定义结束END3. CMenu类CMenu类是Cobject类直接派生的。CMenu类提供了许多处理菜单和菜单项的方法:构造方法;菜单操作方法;菜单项操作方法;虚拟方法。2022/7/167 3. CMenu类(续)构造方法用于建立Windows菜单,并在运行时将它们附加到CMenu对象上,2022/7/168 3. CMenu类(续)菜单操作方法用于处理菜单的顶层操作,只有两个方法:DeleteMenu()删除指定的菜单项(包括附属的级连菜单项);TrackPopupMenu()在一个指定的位置显示一个

4、快捷菜单。2022/7/1693. CMenu类(续)菜单项操作方法有多种用于处理指定菜单项操作2022/7/161012.2.菜单类编程实例2022/7/16111.应用程序的实现功能主窗口标题为Application of Menu。有三个按钮:Voice、Show和Exit。有两个菜单:File和Help。File下拉出三个菜单项:Voice、Show和Exit 。 单击Vioce选项,可听到PC机喇叭发出蜂鸣声单击Show,则弹出对话框,显示信息“This is a Sample of adding menu”。单击Exit,则退出。2022/7/16122022/7/1613主窗口布

5、局如下图;2.编程过程建立工程文件:用MFC AppWizard(exe)工程项目名称:Menu建立主窗口标题为Application of Menu的应用程序。可视化编程:设计界面连接变量修改特性添加代码2022/7/16143.界面设计在Menu的工作区中选择ResourceView在名为IDD_MENU_DIALOG的对话框作为应用程序的主窗口中进行界面设计。对话框中按钮的设计借助于工具窗,在主窗口中安排三个命令按钮。在命令按钮上单击右键,选Propertires在Puch Button Propertires的General上,输入相应的ID和Caption重复三次,完成了三个按钮的设

6、计。2022/7/16153.界面设计(续)2022/7/1616 设计的三个按钮属性对 象 IDCaption命令按钮IDC_VOICE_BUTTON&Voice命令按钮IDC_SHOW_BUTTON&Show命令按钮IDC_EXTT_BUTTON&Exit对话框中菜单的设计插入资源Insert-Resource,显示nsertResource对话框在资源列表选择Menu项单击按钮New ,在资源文件中加一菜单资源。2022/7/1617(a)InsertResource对话框(b) 选择Menu项(c)单击按钮New,加一菜单资源4. 给菜单连接一个类作为一个对象,菜单必须与一个类连接。这

7、个菜单是对话框中的一个资源,将它与对话框的派生类CMenuDlg相连接。菜单IDR_MENU1 连接了一个类,可调用该类的成员函数和成员变量。2022/7/16185.连接菜单和应用程序的主窗口为了在主窗口中显示菜单,菜单还应连接主窗口。菜单与主窗口对话框(即IDD_MENU_DIALOG)的连接:在Menu工作区的Resource View选项卡中,双击Dialog文件夹中的IDD_MENU_DIALOG,弹出IDD_MENU_DIALOG对话框。在对话框内,单击鼠标右键,在快捷菜单中选择Properties命令,在对话框中的Menu组合框中选择IDD_MENU12022/7/16196.应

8、用程序的代码编程2022/7/1620(1) 给菜单File的Exit选项编写代码void CMenuDlg:OnExitMenu()OnOK();(2) 给File菜单的Voice项连接代码void CMenuDlg:OnVioceMenu() MessageBeep(WORD)-1); DWORD iTime=GetCurrentTime() while(GetCurrentTime() AppWizard Step 1 - Dialog based(2) 给对话框添加菜单。Insert - Resource, 在Resource type -Menu - New按钮为应用程序添加菜单资源

9、 - 设置菜单项属性,各菜单项的属性如表所示对象IDCaption菜单时间(&T)菜单项ID_YEAR_MENU年、月、日(&D)菜单项ID_HOUR_MENU小时、分钟、秒(&H)菜单项ID_EXIT_MENU退出(&X)2022/7/1625-在菜单上单击鼠标右键-在弹出菜单中选ClassWizard-出现了Add Class对话框-选择Select an existing calss选项,单击OK按钮,-在弹出的对话框中选择CMy12_5Dlg类,这样就把菜单加入到对话框类中。-在Resource View选项卡中打开Dialog资源组,双击IDD_MY12_5_DIALOG,如下图。鼠

10、标右键-Properties菜单项,在Menu列表框中选择编辑过的菜单的ID:ID_MENU1。这样就把菜单加入到对话框中。2022/7/1626ID变量ID_YEAR_EDITm_Year_EditID_MONTH_EDITm_Month_EditID_DAY_EDITm_Day_EditID_HOUR_EDITm_Hour_EditID_MINUTE_EDITm_Minute_EditID_SECOND_EDITm_Second_EditID_EXIT_BUTTONE&xit2022/7/1627菜单项的消息处理函数菜单项ID消息消息处理函数ID_YEAR_MENUCOMMANDOnYea

11、rMenu()ID_HOUR_MENUCOMMANDOnHourMenu()ID_EXIT_MENUCOMMANDOnExitMenu()void CMy12_5Dlg:OnYearMenu() /给“年、月、日”菜单项消息处理函数struct tm *newtime;/定义tm结构,存贮时间 time_t long_time;/定义保存时间的变量 char buffer10; time( &long_time );/获取时间 newtime = localtime( &long_time ); /时间转换 /将年月日输出到编辑框中. _itoa(newtime-tm_year+1900,bu

12、ffer,10);/tm_year是当前年份和1900之差 m_Year_Edit.SetWindowText(LPCTSTR)(buffer); _itoa(newtime-tm_mon+1,buffer,10);/tm_mon是当前月份 m_Month_Edit.SetWindowText(LPCTSTR)(buffer); _itoa(newtime-tm_mday,buffer,10);/tm_mday是当前日 m_Day_Edit.SetWindowText(LPCTSTR)(buffer);2022/7/1628void CMy12_5Dlg:OnHourMenu() /给菜单项“小时、分、秒”加入代码 struct tm *newtime;/定义tm结构,保存时间 time_t long_time;/定义保存时间的长整型变量 char buffer10; time( &long_time ); /获取时间 newtime = localtime( &long_time ); /时间转换/将小时,分钟,秒输出到编辑框中. _itoa(newtime-tm_hour,buffer,10);/tm_hour是当前小时 m_Hour_Edit.SetWindowText(LPCTSTR)(buffer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论