面向对象与可视化程序设计--VisualC编程主讲教师唐



《面向对象与可视化程序设计--VisualC编程主讲教师唐》由会员分享,可在线阅读,更多相关《面向对象与可视化程序设计--VisualC编程主讲教师唐(30页珍藏版)》请在装配图网上搜索。
1、Click to edit Master title style,Click to edit Master text styles,Second Level,Third Level,Fourth Level,Fifth Level,*,*,*,面向对象与可视化程序设计-Visual C+编程主讲教师:唐 龙教授 计算机科学与技术系黄维通博士 计算机与信息管理中心清 华 大 学2001年2月,12/14/2024,1,第十二章,菜单类及其应用,12/14/2024,2,内容提要,菜单类简介,菜单类控件的应用,12/14/2024,3,12.1.菜单类简介,12/14/2024,4,,,1.菜单,
2、菜单是用户与应用程序交互的最常用手段。,菜单存放在资源脚本中,在程序运行时调用。,一个菜单项必须包含两局部:,菜单项名称字符串构成,例如:file,菜单项标识符ID整数值,可用整数常量表示,菜单标识符ID在资源的头文件Resource.h中定义,前缀IDM指明是菜单项,如:,#define IDM_MENU1 129,在菜单资源,必须链接到类中,通过提供类方法来处理每个菜单项。,12/14/2024,5,IDR_MENU1 MENU DISCARDABLE,BEGIN,POPUP&File /定义File菜单,BEGIN /菜单File定义开始,MENUITEM&Voice,IDC_VOICE
3、_MENU/菜单项,MENUITEM&Show,IDC_SHOW_MENU /菜单项,MENUITEM SEPARATOR/分隔线,MENUITEM&Exit,IDC_EXIT_MENU/菜单项,END/菜单File定义结束,POPUP&Help /定义Help菜单,BEGIN,/菜单Help定义开始,MENUITEM&About,IDC_ABOUT_MENU/菜单项,END /菜单Help定义结束,END,2.菜单结构,菜单模板用一种很简单的结构在资源脚本文件中定义,一个菜单资源模板实例如下:,12/14/2024,6,3.CMenu类,CMenu,类是,Cobject,类直接派生的。,CM
4、enu,类提供了许多处理菜单和菜单项的方法:,构造方法;,菜单操作方法;,菜单项操作方法;,虚拟方法。,12/14/2024,7,3.CMenu类续,构造方法用于建立Windows菜单,并在运行时将它们附加到,CMenu,对象上,,12/14/2024,8,3.CMenu类续,菜单操作方法用于,处理菜单的顶层操作,,,只有两个方法:,DeleteMenu()删除指定的菜单项(包括附属的级连菜单项);,TrackPopupMenu()在一个指定的位置显示一个快捷菜单。,12/14/2024,9,3.CMenu类续,菜单项操作方法有多种用于处理指定菜单项操作,12/14/2024,10,12.2.
5、菜单类编程实例,12/14/2024,11,1.应用程序的实现功能,主窗口标题为Application of Menu。,有三个按钮:Voice、Show和Exit。,有两个菜单:File和Help。,File下拉出三个菜单项:Voice、Show和Exit。,单击Vioce选项,可听到PC机喇叭发出蜂鸣声,单击Show,那么弹出对话框,显示信息“This is a Sample of adding menu。,单击Exit,那么退出。,12/14/2024,12,主窗口布局如以下图;,12/14/2024,13,2.编程过程,建立工程文件:用MFC AppWizard(exe),工程工程名称
6、:Menu,建立主窗口标题为Application of Menu的应用程序。,可视化编程:,设计界面,连接变量,修改特性,添加代码,12/14/2024,14,3.界面设计,在,Menu,的工作区中选择,ResourceView,在名为,IDD_MENU_DIALOG,的对话框作为应用程序的主窗口中进行,界面设计,。,对话框中按钮的设计,借助于工具窗,在主窗口中安排三个命令按钮。,在,命令按钮,上单击,右,键,选,Propertires,在,Puch Button Propertires,的,General,上,输入相应的,ID,和,Caption,重复三次,完成了三个按钮的设计。,12/1
7、4/2024,15,3.界面设计续,设计的三个按钮属性,对 象,IDCaption,命令按钮,IDC_VOICE_BUTTON&Voice,命令按钮,IDC_SHOW_BUTTON&Show,命令按钮,IDC_EXTT_BUTTON&Exit,12/14/2024,16,(a),Insert,Resource,对话框,(b)选择,Menu,项,(c)单击按钮,New,,加一菜,单资源,对话框中菜单的设计,插入资源,Insert,-,Resource,,显示,nsertResource,对话框,在资源列表选择,Menu,项,单击按钮,New,,在资源文件,Menu.rc,中加一菜单资源。,12/
8、14/2024,17,4.给菜单连接一个类,作为一个对象,菜单必须与一个类连接。,这个菜单是对话框中的一个资源,将它与对话框的派生类,CMenuDlg,相连接。,菜单,IDR_MENU1,连接了一个类,可调用该类的成员函数和成员变量。,12/14/2024,18,5.连接菜单和应用程序的主窗口,为了在主窗口中显示菜单,菜单还应连接主窗口。,菜单与主窗口对话框(即,IDD_MENU_DIALOG,)的连接:,在,Menu,工作区的,Resource View,选项卡中,双击,Dialog,文件夹中的,IDD_MENU_DIALOG,,弹出,IDD_MENU_DIALOG,对话框。,在对话框内,单
9、击鼠标右键,在快捷菜单中选择,Properties,命令,在对话框中的,Menu,组合框中选择,IDD_MENU1,12/14/2024,19,(1)给菜单File的Exit选项编写代码,void CMenuDlg:OnExitMenu,OnOK;,6.应用程序的代码编程,(2)给File菜单的Voice项连接代码,void CMenuDlg:OnVioceMenu,MessageBeepWORD-1;,DWORD iTime=GetCurrentTime,whileGetCurrentTime AppWizard Step 1 -Dialog based,(2)给对话框添加菜单。Insert
10、-Resource,在Resource type-Menu-New按钮为应用程序添加菜单资源-设置菜单项属性,各菜单项的属性如表所示,对象IDCaption,菜单时间(&T),菜单项ID_YEAR_MENU年、月、日(&D),菜单项ID_HOUR_MENU小时、分钟、秒(&H),菜单项ID_EXIT_MENU退出(&X),12/14/2024,24,-在菜单上单击鼠标右键,-在弹出菜单中选ClassWizard,-出现了Add Class对话框,-选择Select an existing calss选项,单击OK按钮,,-在弹出的对话框中选择CMy12_5Dlg类,这样就把菜单参加到对话框类中
11、。,-在Resource View选项卡中翻开Dialog资源组,双击IDD_MY12_5_DIALOG,如以下图。,鼠标右键-Properties菜单项,,在Menu列表框中选择编辑过的,菜单的ID:ID_MENU1。这样,就把菜单参加到对话框中。,12/14/2024,25,ID变量,ID_YEAR_EDITm_Year_Edit,ID_MONTH_EDITm_Month_Edit,ID_DAY_EDITm_Day_Edit,ID_HOUR_EDITm_Hour_Edit,ID_MINUTE_EDITm_Minute_Edit,ID_SECOND_EDITm_Second_Edit,ID_
12、EXIT_BUTTONE&xit,12/14/2024,26,菜单项的消息处理函数,菜单项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(/获取时间,newtime=localtime
13、(/时间转换,/将年月日输出到编辑框中.,_itoa(newtime-tm_year+1900,buffer,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)(buff
14、er);,12/14/2024,27,void CMy12_5Dlg:OnHourMenu()/给菜单项“小时、分、秒参加代码,struct tm*newtime;/定义tm结构,保存时间,time_t long_time;/定义保存时间的长整型变量,char buffer10;,time(/获取时间,newtime=localtime(/时间转换,/将小时,分钟,秒输出到编辑框中.,_itoa(newtime-tm_hour,buffer,10);/tm_hour是当前小时,m_Hour_Edit.SetWindowText(LPCTSTR)(buffer);,_itoa(newtime-t
15、m_min+1,buffer,10);/tm_min是当前分钟,m_Minute_Edit.SetWindowText(LPCTSTR)(buffer);,_itoa(newtime-tm_sec,buffer,10);/tm_sec是当前秒,m_Second_Edit.SetWindowText(LPCTSTR)(buffer);,12/14/2024,28,(第十二章),完,12/14/2024,29,第11-12章课后练习题,编写一个程序,对每组4个元素的10组数据进行管理,用用按键/下拉菜单操作实现功能包括:,输入修改数据;,显示一组数据;,对一组数据求:,最大值;,最小值;,平均值;,均方差,;,注,11月12日,前完成,12/14/2024,30,
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025开年第一课知敬畏守底线为2025年开门红营造风清气正的干事环境
- 高考倒计时100天学生与家长如何携手前行主题班会
- 2025民营企业座谈会要点速览促进民营经济发展
- 3月5日学习雷锋主题班会争做当代雷锋
- 三八妇女节致敬新时代的巾帼英雄
- 从井冈山歌谣感悟井冈山精神身体力行重唱红歌
- 三八妇女节致敬新时代的巾帼英雄
- 心理开学第一课家长应如何帮助孩子应对开学综合征
- 初三中考百日倒计时动员班会逆袭狂飙促奇迹
- 民俗文化二月二龙抬头主题班会二月二龙抬头风调雨顺好年头
- 3月5日学雷锋纪念日主题班会助人为乐无私奉献
- 幼儿园开学第一课家长会家园共育缓解入学焦虑
- 我们开学啦主题班会新学期新气象新起点
- 人教版四年级数学上册《笔算除法》教学课件
- 深入学习2025新修订《中小学生学籍管理办法》新办法新在哪里