面向对象与可视化程序设计第十一讲(菜单设计).ppt

上传人:牧羊曲112 文档编号:6034362 上传时间:2023-09-16 格式:PPT 页数:18 大小:233KB
返回 下载 相关 举报
面向对象与可视化程序设计第十一讲(菜单设计).ppt_第1页
第1页 / 共18页
面向对象与可视化程序设计第十一讲(菜单设计).ppt_第2页
第2页 / 共18页
面向对象与可视化程序设计第十一讲(菜单设计).ppt_第3页
第3页 / 共18页
面向对象与可视化程序设计第十一讲(菜单设计).ppt_第4页
第4页 / 共18页
面向对象与可视化程序设计第十一讲(菜单设计).ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《面向对象与可视化程序设计第十一讲(菜单设计).ppt》由会员分享,可在线阅读,更多相关《面向对象与可视化程序设计第十一讲(菜单设计).ppt(18页珍藏版)》请在三一办公上搜索。

1、1,第 12章 菜单设计,用户与应用程序的交互通常是从菜单栏中选择命令或用键盘加速器的形式,因此,菜单和加速器的资源在VC+编程中是很重要的。,12.1 菜单简介,菜单一般存放在资源脚本中,在程序运行时才调用,一个菜单项一般有两个必要的部分,它们分别是字符串名如file和整数标识符,一般来说,菜单的标识符ID在资源的头文件(Resource.h)中定义,如:#define IDM_MENU1 129 其中,前缀IDM指明是菜单项,在菜单资源创建后,必须将它链接到类中,通过提供类方法来处理每个菜单项。,2,12.1.2 菜单结构,菜单模板用一种很简单的结构在资源脚本文件中定义,下面就是一个菜单资

2、源模板,IDR_MENU1 MENU DISCARDABLE BEGIN POPUP&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 MENUITEM&About,IDC_ABOUT_MENU/菜单项 END/菜单Help定义结束END,3,12.1.3 CMenu类,CMenu

3、类提供了许多处理菜单和菜单项的方法,它们分别是构造方法、菜单操作方法、菜单项操作方法和虚拟方法。构造方法是用来建立Windows菜单并在运行时将它们附加到CMenu对象上,,4,菜单操作方法中只有两个类方法用来处理菜单的顶层操作,菜单项操作特定的CMenu类方法,5,12.2菜单创建及其响应示例,12.2.1应用程序的主窗口布局,主窗口标题为Application of Menu。在主窗口中有三个按钮,分别为Voice、Show和Exit,单击File菜单,出现一个下拉菜单,单击Vioce选项,可听到PC机喇叭发出蜂鸣声。单击Show,则显示一个信息“This is a Sample of a

4、dding menu”,同样,若在窗口中单击相应的按钮,也会有同样的效果,6,应用程序的可视化编程部分,1 对话框中按钮的设计,对 象IDCaption命令按钮IDC_VOICE_BUTTON&Voice命令按钮IDC_SHOW_BUTTON&Show命令按钮IDC_EXTT_BUTTON&Exit,2 对话框中的菜单的设计,(a)选择Insert菜单中的Resource命令,显示InsertResource对话框,(b)选择Menu项使其高亮化,(c)单击New按钮,在资源文件Menu.rc中增加了一项资源,即一个菜单,7,12.2.5 给菜单连接一个类,菜单实际上是一个对象,在具体的编程中

5、我们必须给它连接一个类。因为这个菜单是对话框中的一个资源,它将调用对话框中一些成员,所以把这个菜单与对话框的派生类CMenuDlg相连接。,8,连接菜单和应用程序的主窗口,菜单IDR_MENU1 连接了一个类,这只是表示该菜单可以调用程序中这个类的成员函数和成员变量,此时在应用程序的主窗口中仍然没有显示菜单,这是因为菜单还没有和应用程序主窗口连接起来。下面介绍菜单与应用程序的主窗口对话框(即IDD_MENU_DIALOG)的连接。(1)在Menu的工作区的Resource View选项卡中,双击Dialog文件夹中的IDD_MENU_DIALOG,此时弹出IDD_MENU_DIALOG对话框。

6、(2)在对话框的任何一个空白域,单击鼠标右键,然后在弹出的快捷菜单中选择Properties命令,在对话框中的Menu组合框中选择IDD_MENU1,9,应用程序的代码编程,1.给菜单File的Exit选项编写代码,void CMenuDlg:OnExitMenu()/TODO:在此处添加自己的命令句柄代码/代码编写开始 OnOK();/代码编写结束,10,2 给File菜单的Voice项连接代码,void CMenuDlg:OnVioceMenu()/TODO:在此处添加自己的命令句柄代码/代码编写开始 MessageBeep(WORD)-1);DWORD iTime=GetCurrentT

7、ime()while(GeCurrentTime()iTime+500);MessageBeep(WORD)-1);/代码编写结束,MessageBeep()函数使计算机的喇叭发出蜂鸣声。然后间隔500毫秒,再发出一声蜂鸣。,11,3 给File菜单的Show项连接代码,void CMenuDlg:OnShowMenu()MessageBox(This is sample of adding a menu.);,4 给Help菜单的About项连接代码,void CMenuDlg:OnAboutMeenu()MessageBox(”This is a sample.);,12,5 给命令按钮连

8、接代码,void Cmenudlg:OnVioceButton()OnVioceMenu();,OnShowButton()函数的代码如下:void CMenuDlg:OnShowButton()OnShowMenu();,OnExitButton()函数的代码如下:void CMenuDlg:OnExitButton()OnExitMenu();,13,创建一个带有“时间”的菜单,“时间”菜单中包含“年、月、日”、“小时、分、秒”和“退出”选项,其中选择“年、月、日”时,在窗口的对话框中显示当前的日期,选择“小时、分、秒”时,在对话框中显示是当前的时间。本例的工程文件名为12_5。,14,(

9、1)MFC-AppWizard Step 1-Dialog based(2)给对话框添加菜单。Insert-Resource,在Resource type-Menu-New按钮为应用程序添加菜单资源-设置菜单项属性,各菜单项的属性如表所示,对象IDCaption菜单时间(&T)菜单项ID_YEAR_MENU年、月、日(&D)菜单项ID_HOUR_MENU小时、分钟、秒(&H)菜单项ID_EXIT_MENU退出(&X),15,-在菜单上单击鼠标右键-在弹出菜单中选ClassWizard-出现了Add Class对话框-选择Select an existing calss选项,单击OK按钮,-在弹

10、出的对话框中选择CMy12_5Dlg类,这样就把菜单加入到对话框类中。-在Resource View选项卡中打开Dialog资源组,双击IDD_MY12_5_DIALOG,如下图。,鼠标右键-Properties菜单项,在Menu列表框中选择编辑过的菜单的ID:ID_MENU1。这样就把菜单加入到对话框中。,16,ID变量ID_YEAR_EDITm_Year_EditID_MONTH_EDITm_Month_EditID_DAY_EDITm_Day_EditID_HOUR_EDITm_Hour_EditID_MINUTE_EDITm_Minute_EditID_SECOND_EDITm_Sec

11、ond_EditID_EXIT_BUTTONE&xit,17,菜单项的消息处理函数菜单项ID消息消息处理函数ID_YEAR_MENUCOMMANDOnYearMenu()ID_HOUR_MENUCOMMANDOnHourMenu()ID_EXIT_MENUCOMMANDOnExitMenu(),void CMy12_5Dlg:OnYearMenu()/给“年、月、日”菜单项消息处理函数struct tm*newtime;/定义tm结构,存贮时间 time_t long_time;/定义保存时间的变量 char buffer10;time(,18,void CMy12_5Dlg:OnHourMenu()/给菜单项“小时、分、秒”加入代码 struct tm*newtime;/定义tm结构,保存时间 time_t long_time;/定义保存时间的长整型变量 char buffer10;time(,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号