chapter6—菜单工具栏和状态栏.ppt

上传人:s****8 文档编号:68957574 上传时间:2022-12-30 格式:PPT 页数:19 大小:227KB
返回 下载 相关 举报
chapter6—菜单工具栏和状态栏.ppt_第1页
第1页 / 共19页
chapter6—菜单工具栏和状态栏.ppt_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《chapter6—菜单工具栏和状态栏.ppt》由会员分享,可在线阅读,更多相关《chapter6—菜单工具栏和状态栏.ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第1010章章 菜单、快捷键和字符串表菜单、快捷键和字符串表本章重点本章重点菜单的使用菜单的使用 用户与应用程序的交互通常是从菜单栏中选择命令或用键用户与应用程序的交互通常是从菜单栏中选择命令或用键盘加速器的形式,因此,菜单和加速器的资源在盘加速器的形式,因此,菜单和加速器的资源在VC+编程中编程中是很重要的。是很重要的。10.1 菜单简介菜单简介 菜单一般存放在资源脚本中,在程序运行时才调用,一个菜单一般存放在资源脚本中,在程序运行时才调用,一个菜单项一般有两个必要的部分,它们分别是菜单项一般有两个必要的部分,它们分别是字符串名字符串名如如filefile和和整数标识符整数标识符,一般来说

2、,菜单的标识符,一般来说,菜单的标识符IDID在资源的头文件在资源的头文件(Resource.h)(Resource.h)中定义,如:中定义,如:#define IDM_MENU1 129#define IDM_MENU1 129 其中,前缀其中,前缀IDMIDM指明是菜单项,在菜单资源创建后,必指明是菜单项,在菜单资源创建后,必须将它链接到类中,通过提供类方法来处理每个菜单项。须将它链接到类中,通过提供类方法来处理每个菜单项。210.1.2 菜单结构菜单结构 菜单模板用一种很简单的结构在资源脚本文件中定义,下菜单模板用一种很简单的结构在资源脚本文件中定义,下面就是一个菜单资源模板面就是一个菜

3、单资源模板IDR_MENU1 MENU DISCARDABLE IDR_MENU1 MENU DISCARDABLE BEGINBEGIN POPUP&FilePOPUP&File /菜单名菜单名 BEGINBEGIN /菜单菜单FileFile开始开始 MENUITEM&Voice,IDC_VOICE_MENU/MENUITEM&Voice,IDC_VOICE_MENU/菜单项菜单项 MENUITEM&Show,IDC_SHOW_MENU /MENUITEM&Show,IDC_SHOW_MENU /菜单项菜单项 MENUITEM SEPARATORMENUITEM SEPARATOR/分隔线

4、分隔线 MENUITEM&Exit,IDC_EXIT_MENU /MENUITEM&Exit,IDC_EXIT_MENU /菜单项菜单项 ENDEND /菜单菜单FileFile结束结束 POPUP&HelpPOPUP&Help /定义定义HelpHelp菜单菜单 BEGINBEGIN MENUITEM&About,IDC_ABOUT_MENU/MENUITEM&About,IDC_ABOUT_MENU/菜单项菜单项 ENDEND /菜单菜单HelpHelp定义结束定义结束ENDEND310.1.3 CMenu类类 CMenuCMenu类提供了许多处理菜单和菜单项的方法,它们分别是类提供了许多

5、处理菜单和菜单项的方法,它们分别是构造方法构造方法、菜单操作方法菜单操作方法、菜单项操作方法菜单项操作方法和和虚拟方法虚拟方法。构造方法是用来建立构造方法是用来建立WindowsWindows菜单并在运行时将它们附加到菜单并在运行时将它们附加到CMenuCMenu对象上。对象上。4 菜单操作方法中只有两个类菜单操作方法中只有两个类方法用来处理菜单的顶层操作方法用来处理菜单的顶层操作DeleteMenuDeleteMenu()()TrackPopupMenuTrackPopupMenu()()删除某个特定的菜单项删除某个特定的菜单项(包括附属的级连菜单项包括附属的级连菜单项)在一个在一个POIN

6、TPOINT结构所指定的位置显示一个快捷菜单结构所指定的位置显示一个快捷菜单菜单项操菜单项操作特定的作特定的CMenuCMenu类类方法方法510.2菜单创建及其响应示例菜单创建及其响应示例10.2.1应用程序的主窗口布局应用程序的主窗口布局 主窗口标题为主窗口标题为Application of MenuApplication of Menu。在主窗口中有三个按钮,分别在主窗口中有三个按钮,分别为为VoiceVoice、ShowShow和和ExitExit单击单击FileFile菜单,出菜单,出现一个下拉菜单,现一个下拉菜单,单击单击VioceVioce选项,选项,可听到可听到PCPC机喇叭发

7、机喇叭发出蜂鸣声。单击出蜂鸣声。单击ShowShow,则显示一个则显示一个信息信息“This is a This is a Sample of adding Sample of adding menumenu”,同样,若同样,若在窗口中单击相应在窗口中单击相应的按钮,也会有同的按钮,也会有同样的效果样的效果6应用程序的可视化编程部分应用程序的可视化编程部分1 1 对话框中按钮的设计对话框中按钮的设计对对 象象IDIDCaptionCaption命令按钮命令按钮IDC_VOICE_BUTTONIDC_VOICE_BUTTON&Voice&Voice命令按钮命令按钮IDC_SHOW_BUTTONI

8、DC_SHOW_BUTTON&Show&Show命令按钮命令按钮IDC_EXTT_BUTTONIDC_EXTT_BUTTON&Exit&Exit2 对话框中的菜单的设计对话框中的菜单的设计(a)(a)选择选择InsertInsert菜单菜单中的中的ResourceResource命命令,显示令,显示InsertInsertResourceResource对话框对话框(b)(b)选择选择MenuMenu项项使其高亮化使其高亮化(c)(c)单击单击NewNew按钮,在资按钮,在资源文件源文件Menu.rcMenu.rc中增加了中增加了一项资源,即一个菜单一项资源,即一个菜单710.2.5 给菜单连

9、接一个类给菜单连接一个类菜单实际上是一个对象,在具体的编程中我们必须给它连接一个菜单实际上是一个对象,在具体的编程中我们必须给它连接一个类。因为这个菜单是对话框中的一个资源,它将调用对话框中一类。因为这个菜单是对话框中的一个资源,它将调用对话框中一些成员,所以把这个菜单与对话框的派生类些成员,所以把这个菜单与对话框的派生类CMenuDlgCMenuDlg相连接。相连接。8连接菜单和应用程序的主窗口连接菜单和应用程序的主窗口 菜单菜单IDR_MENU1IDR_MENU1 连接了一个类,这只是表示该菜单可以调用程序中这连接了一个类,这只是表示该菜单可以调用程序中这个类的成员函数和成员变量,此时在应

10、用程序的主窗口中仍然没有显示菜个类的成员函数和成员变量,此时在应用程序的主窗口中仍然没有显示菜单,这是因为菜单还没有和应用程序主窗口连接起来。单,这是因为菜单还没有和应用程序主窗口连接起来。下面介绍菜单与应用程序的主窗口对话框(即下面介绍菜单与应用程序的主窗口对话框(即IDD_MENU_DIALOGIDD_MENU_DIALOG)的连接。的连接。(1 1)在)在MenuMenu的工作区的的工作区的Resource ViewResource View选项卡中,双击选项卡中,双击DialogDialog文件夹中的文件夹中的IDD_MENU_DIALOGIDD_MENU_DIALOG,此时弹出此时弹

11、出IDD_MENU_DIALOGIDD_MENU_DIALOG对话框。对话框。(2 2)在对话框的任何一个空白域,单击鼠标右键,然后在弹出的快捷菜单)在对话框的任何一个空白域,单击鼠标右键,然后在弹出的快捷菜单中选择中选择PropertiesProperties命令,在对话框中的命令,在对话框中的MenuMenu组合框中选择组合框中选择IDD_MENU1IDD_MENU19应用程序的代码编程应用程序的代码编程1.给菜单给菜单File的的Exit选项编写代码选项编写代码void void CMenuDlgCMenuDlg:OnExitMenuOnExitMenu()()/TODO/TODO:在此

12、处添加自己的命令句柄代码在此处添加自己的命令句柄代码 /代码编写开始代码编写开始 OnOKOnOK();();/代码编写结束代码编写结束 102 给给File菜单的菜单的Voice项连接代码项连接代码 void void CMenuDlgCMenuDlg:OnVioceMenuOnVioceMenu()()/TODO/TODO:在此处添加自己的命令句柄代码在此处添加自己的命令句柄代码 /代码编写开始代码编写开始 MessageBeepMessageBeep(WORDWORD)-1-1););DWORD DWORD iTimeiTime=GetCurrentTimeGetCurrentTime(

13、)()whilewhile(GetCurrentTimeGetCurrentTime()()iTime+500 AppWizard Step 1 -Dialog based(1)MFC -AppWizard Step 1 -Dialog based(2)(2)给对话框添加菜单。给对话框添加菜单。Insert-Resource,Insert-Resource,在在Resource Resource type-Menu-Newtype-Menu-New按钮为应用程序添加菜单资源按钮为应用程序添加菜单资源 -设置菜设置菜单项属性,各菜单项的属性如表所示单项属性,各菜单项的属性如表所示对象对象IDID

14、CaptionCaption菜单菜单时间时间(&Time)(&Time)菜单项菜单项ID_YEAR_MENUID_YEAR_MENU年、月、日年、月、日(&Date)(&Date)菜单项菜单项ID_HOUR_MENUID_HOUR_MENU小时、分钟、秒小时、分钟、秒(&H)(&H)菜单项菜单项ID_EXIT_MENUID_EXIT_MENU退出退出(E&xitE&xit)15-在菜单上单击鼠标右键在菜单上单击鼠标右键-在弹出菜单中选在弹出菜单中选ClassWizardClassWizard-出现了出现了Add ClassAdd Class对话框对话框-选择选择Select an existi

15、ng Select an existing calsscalss选项,单击选项,单击OKOK按钮,按钮,-在弹出的对话框中选择在弹出的对话框中选择CMy12_5DlgCMy12_5Dlg类,这样就把菜单加入到类,这样就把菜单加入到对话框类中。对话框类中。-在在Resource ViewResource View选项卡中打开选项卡中打开DialogDialog资源组,双击资源组,双击IDD_MY12_5_DIALOGIDD_MY12_5_DIALOG,如下图。如下图。鼠标右键鼠标右键-PropertiesProperties菜单项,菜单项,在在MenuMenu列表框中选择编辑过的列表框中选择编辑

16、过的菜单的菜单的IDID:ID_MENU1ID_MENU1。这样这样就把菜单加入到对话框中。就把菜单加入到对话框中。16IDID变量变量ID_YEAR_EDITID_YEAR_EDITm_Year_Editm_Year_EditID_MONTH_EDITID_MONTH_EDIT m_Month_Editm_Month_EditID_DAY_EDITID_DAY_EDITm_Day_Editm_Day_EditID_HOUR_EDITID_HOUR_EDITm_Hour_Editm_Hour_EditID_MINUTE_EDITID_MINUTE_EDIT m_Minute_Editm_Min

17、ute_EditID_SECOND_EDITID_SECOND_EDIT m_Second_Editm_Second_EditID_EXIT_BUTTONID_EXIT_BUTTON E&xitE&xit17菜单项的消息处理函数菜单项的消息处理函数菜单项菜单项IDID消息消息消息处理函数消息处理函数ID_YEAR_MENUID_YEAR_MENUCOMMANDCOMMANDOnYearMenuOnYearMenu()()ID_HOUR_MENUID_HOUR_MENUCOMMANDCOMMANDOnHourMenuOnHourMenu()()ID_EXIT_MENUID_EXIT_MENUCO

18、MMANDCOMMANDOnExitMenuOnExitMenu()()void CMy12_5Dlg:OnYearMenu()/void CMy12_5Dlg:OnYearMenu()/给给“年、月、日年、月、日”菜单项消息处理函数菜单项消息处理函数 structstruct tm*tm*newtimenewtime;/定义定义tmtm结构结构,存贮时间存贮时间 time_t long_time;time_t long_time;/定义保存时间的变量定义保存时间的变量 char buffer10;char buffer10;time(&long_time);time(&long_time);

19、/获取时间获取时间 newtimenewtime=localtimelocaltime(&long_time);/(&long_time);/时间转换时间转换 /将年月日输出到编辑框中将年月日输出到编辑框中._ _itoa(newtimeitoa(newtime-tm_year+1900,buffer,10);/tm_year-tm_year+1900,buffer,10);/tm_year是当前年份和是当前年份和19001900之差之差 m_Year_Edit.SetWindowText(LPCTSTR)(bufferm_Year_Edit.SetWindowText(LPCTSTR)(bu

20、ffer););_ _itoa(newtimeitoa(newtime-tm_mon+1,buffer,10);-tm_mon+1,buffer,10);/tm_montm_mon是当前月份是当前月份 m_Month_Edit.SetWindowText(LPCTSTR)(bufferm_Month_Edit.SetWindowText(LPCTSTR)(buffer););_ _itoa(newtimeitoa(newtime-tm_mday,buffer,10);-tm_mday,buffer,10);/tm_mdaytm_mday是当前日是当前日 m_Day_Edit.SetWindow

21、Text(LPCTSTR)(bufferm_Day_Edit.SetWindowText(LPCTSTR)(buffer););18void CMy12_5Dlg:OnHourMenu()/void CMy12_5Dlg:OnHourMenu()/给菜单项给菜单项“小时、分、秒小时、分、秒”加入代码加入代码 structstruct tm*tm*newtimenewtime;/定义定义tmtm结构结构,保存时间保存时间 time_t long_time;time_t long_time;/定义保存时间的长整型变量定义保存时间的长整型变量 char buffer10;char buffer10;

22、time(&long_time);time(&long_time);/获取时间获取时间 newtimenewtime=localtimelocaltime(&long_time);(&long_time);/时间转换时间转换/将小时将小时,分钟分钟,秒输出到编辑框中秒输出到编辑框中._ _itoa(newtimeitoa(newtime-tm_hour,buffer,10);-tm_hour,buffer,10);/tm_hour/tm_hour是当前小时是当前小时 m_Hour_Edit.SetWindowText(LPCTSTR)(bufferm_Hour_Edit.SetWindowTe

23、xt(LPCTSTR)(buffer););_ _itoa(newtimeitoa(newtime-tm_min+1,buffer,10);-tm_min+1,buffer,10);/tm_min/tm_min是当前分钟是当前分钟 m_Minute_Edit.SetWindowText(LPCTSTR)(bufferm_Minute_Edit.SetWindowText(LPCTSTR)(buffer););_ _itoa(newtimeitoa(newtime-tm_sec,buffer,10);-tm_sec,buffer,10);/tm_sec/tm_sec是当前秒是当前秒 m_Second_Edit.SetWindowText(LPCTSTR)(bufferm_Second_Edit.SetWindowText(LPCTSTR)(buffer););19

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

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁