C++ 编程 第四章 对话框
更新时间:2023-05-10 04:04:01 阅读量: 实用文档 文档下载
- c罗推荐度:
- 相关推荐
21天学会C++ ,讲得不错
第四讲:对话框
杨章伟 e-mail:yang505412@
北京源智天下科技有限公司
联系方式:
21天学会C++ ,讲得不错
课程内容安排
对话框概述 创建对话框 模态对话框和非模态对话框 属性页和向导对话框 公用对话框 综合练习 思考和习题
北京源智天下科技有限公司1-2
联系方式:
21天学会C++ ,讲得不错
对话框概述
在Visual C++中,对话框是一个真正的窗口。对话框不 仅可以接收消息,而且还可以被移动和关闭,甚至可以 在其客户区中进行绘图。因此,可以将对话框看成一个 大容器,在它上面能够放置各种各样的标准及扩展控件, 使程序支持用户输入的手段更加丰富,如图4-1所示。
控件1
控件2
对话框
控件n
北京源智天下科技有限公司1-3
联系方式:
21天学会C++ ,讲得不错
对话框的种类 一般的说,Windows应用程序中,对话框分为模态( Modal)对话框和非模态(Modeless)对话框两种, 这两种对话框的区别在于当对话框打开时是否允许用户 进行其他对象的操作。
模态对话框是指在用户想要进行对话框以外的应用程序 操作时必须首先对该对话框进行响应非模态对话框与模态对话框不同,当用户打开非模态对 话框时,依然可以操作其他窗口。
北京源智天下科技有限公司1-4
联系方式:
21天学会C++ ,讲得不错
模态对话框
模态对话框垄断了用户的输入,当一个模态对话框打开时, 用户只能与该对话框进行交互,而其他用户界面对象收不到 输入信息。模态对话框下,用户需要操作目标对话框就必须 先操作模态对话框,如图4-3所示,这就是用户对模态对话 框的处理。
用户
模态对话框
目标对话框
北京源智天下科技有限公司1-5
联系方式:
21天学会C++ ,讲得不错
非模态对话框
非模态对话框允许用户在处理非模态对话框的同时处理目标 对话框,其不会垄断用户的输入,如图4-5所示。
非模态对话框
用户
目标对话框
北京源智天下科技有限公司1-6
联系方式:
21天学会C++ ,讲得不错
对话框编辑器
对话框的设计区域称为对话框编辑器。当读者插入一个 新的对话框资源后,打开工作台的资源面板,打开【 Dialog】文件夹,可以看到下面有一个ID号为 IDD_ABOUTBOX对话框,这几乎是每个MFC应用程 序所具备的。 此外,用户可以添加一个自己的对话框。鼠标右击【 Dialog】文件夹,在弹出的快捷方式菜单中选择【 Insert Dialog】菜单项,这时,不仅在资源面板中多了 一个ID号IDD_DIALOG1的对话框资源,而且在右边的 编辑器中也显示了这个对话框模板的编辑窗口,如图46所示。
北京源智天下科技有限公司1-7
联系方式:
21天学会C++ ,讲得不错
北京源智天下科技有限公司1-8
联
系方式:
21天学会C++ ,讲得不错
创建对话框 无论是模态对话框还是非模态对话框,都需要拥有相应 的对话框模板资源和新的对话框类,二者的创建都是遵 循以下步骤。 (1)添加一个新的对话框资源并用对话框编辑器设计 对话框。 (2)创建新的对话框类,该类应从CDialog类派生。 (3)使用ClassWizard为对话框类加入与控件相关联 的成员变量。 (4)在对话框类中添加需要的消息处理。 (5)创建对话框并显示。
北京源智天下科技有限公司1-9
联系方式:
21天学会C++ ,讲得不错
添加对话框资源
使用AppWizard创建一个单文档视图工程“创建对话 框”,需要为该工程添加一个对话框,只需在工作台的 【ResourceView】选项卡中选择【Dialog】项,右键 单击该项并在快捷菜单中单击【Insert Dialog】命令, 如图4-9所示。
北京源智天下科技有限公司1-10
联系方式:
21天学会C++ ,讲得不错
添加控件
添加了对话框资源后,即可根据用户的需要在对话框中 添加控件,控件的添加在第3章中已经具体讲解过了, 此处不再赘述。例如,需要创建一个具有对用户输入的 两个数字进行相加的对话框时,那么只需要在上一步骤 中创建的对话框中添加相应控件,并设置相关属性即可 ,如图4-12所示。
北京源智天下科技有限公司1-11
联系方式:
21天学会C++ ,讲得不错
使用ClassWizard创建对话框类 利用ClassWizard,用户可以十分方便地创建MFC窗口 类的派生类,对话框类也不例外。
北京源智天下科技有限公司1-12
联系方式:
21天学会C++ ,讲得不错
使用ClassWizard加入成员变量创建好了对话框类后,就可以使用ClassWizard为对话框类 加入与控件相关联的成员变量了。
北京源智天下科技有限公司1-13
联系方式:
21天学会C++ ,讲得不错
添加消息处理函数
所谓消息处理函数即窗口过程,在这个函数中,不同的消息 将用switch分支语句分配到不同的处理程序中去,消息 处理函数在应用程序中的功能如图4-23所示。键盘消息
鼠标消息
消息处理函数
应用程序
北京源智天下科技有限公司1-14
联系方式:
21天学会C++ ,讲得不错
添加消息处理函数
双击ClassWizard中的按钮来打开【Add Member Function】对话框。在该对话框中添加消息处理函数。 事实上,读者可以右击该类,在其中选择【Add Windows Message Handle】菜单项,在其中也可添加 消息处理函数。
北京源智天下科技有限公司1-15
联系方式:
21天学会C++ ,讲得不错
显示非模态对话框
例如,要显示一个非模态对话框m_Mydlg,其实现代码如 下所示。if (!m_Mydlg.m_hWnd) 是否已被创建 { m_Mydlg.Create(IDD_MYDLG); IDD_MYDLG } m_Mydlg.ShowWindow(SW_SHOW); //判断对话框
//创建对话框
//显示对话框
北京源智
天下科技有限公司1-16
联系方式:
21天学会C++ ,讲得不错
显示模态对话框
例如,要创建并显示一个模态对话框,其实现代码如下所示 : CMyDlg m_Mydlg; //定义对象m_Mydlg m_Mydlg.DoModal(); //创建模态对话框
北京源智天下科技有限公司1-17
联系方式:
21天学会C++ ,讲得不错
对话框的数据交换
对话框的数据成员变量存储了与控件相对应的数据。在对话 框运行后,数据变量需要和控件交换数据,以完成输入 或输出功能。例如,一个编辑框可能需要用来输入,也 可能需要用来输出。当用作输入时,用户在其中输入了 数值之后,对应的数据成员应该更新与编辑框中的数值 相同;当用作输出时,应及时刷新编辑框的内容以反映 相应数据成员的变化。因此,对话框就需要一种机制来 实现这种数据交换功能。
北京源智天下科技有限公司1-18
联系方式:
21天学会C++ ,讲得不错
对话框的数据交换
Visual C++的对话框中数据交换通过调用UpdateData函数 来实现。UpdataData函数原形如下: BOOL UpdateData ( BOOL bSaveAndValidaet = TRUE); UpdataData函数只有一个布尔型参数bSaveAndValidate ,其决定了数据传送的方向。若参数值为TURE,即调用 UpdateData(TRUE),表示将数据从对话框的控件中传 送到对应的数据成员中;若参数值为FALSE,即调用 UpdateData(FALSE),则表示将数据从数据成员中传送 给对应的控件。
北京源智天下科技有限公司1-19
联系方式:
21天学会C++ ,讲得不错
对话框的数据交换
例如,用户在非模态对话框IDD_MYDLG的【相加】按钮的 处理函数OnOK()函数中键入如下代码来实现数据交换。UpdateData(TRUE); //将数据从对话框的控件中 传送到对应的数据成员中 m_nSum=m_nNum1+m_nNum2; //计算 UpdateData(FALSE); //将数据从数据成员中传送 给对应的控件
北京源智天下科技有限公司1-20
联系方式:
21天学会C++ ,讲得不错
综合练习
在第3章的“学生个人信息登记表”对话框中,完成如 下功能:当用户输入了该对话框中对应信息后,单击 【OK】按钮,这些信息将显示到学生信息编辑框中, 如图4-38所示。
北京源智天下科技有限公司1-21
联系方式:
正在阅读:
C++ 编程 第四章 对话框05-10
中国移动CNGI工程实施纲要03-02
儿科人群药物临床试验技术指导原则201508-21
A Probabilistic and RIPless Theory of Compressed Sensing.pdf04-30
第一讲-团学干部的职能及重要性(1)12-02
2016届江西省上饶市上饶中学高三上学期第一次月考数学试题(理科、培优、实验、理补班)06-08
这件事在我的记忆中作文600字07-11
2018高考语文各地模拟卷实用类非连续性文本阅读60篇(附答案解释)05-16
某桥梁结构施工组织方案01-04
《汉武大帝》部分剪辑05-13
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- C++
- 第四章
- 对话框
- 编程
- 管道外径和壁厚代号说明
- 国际市场营销学试题及答案(2013)
- 黄芪注射液、门冬氨酸钾镁治疗病毒性心肌炎12例
- 新目标英语八年级下U5重点短语和句子
- 粤教版必修四 变形记(节选)
- 231184 北交《轨道交通控制系统》在线作业二 15秋答案
- 机械设备租赁协议
- 时间序列建模分析
- 高压除氧器的并列与解列
- 数控技术参考文献
- 建设工程造价咨询合同(示范文本)
- (第15课时)数列复习小结(1)
- 中专生入团申请书样本
- 米奇幼儿园家长开放日活动策划
- 于娟《生命日记》
- 教研室2014年下半年主要工作 - 沙河市教育信息网 首页
- 葡萄酒产业发展现状分析
- 部编版小学语文一年级下册课文3.9夜色同步练习C卷
- 九年级化学下册课题3 水的组成教案与教学反思
- 【最新】学年度第一学期小学英语组工作总结