C++ 编程 第四章 对话框
更新时间:2023-08-09 02:17: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++ 编程 第四章 对话框08-09
联锁块01-24
实验心理学01-31
制氧工艺培训讲义08-24
美的集团的应收账款管理中的问题研究04-29
花生的味道作文400字06-26
人教版七年级政治下学案(卢祥荣)10-02
《女职工劳动保护特别规定》存在问题和不足11-30
二十四史和朝代时间表(挺全的)01-16
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 第四章
- 对话框
- 编程
- 平假名汉字对照表
- 烽火POE24口主交换机配置脚本
- 试论萧红的性格与创作
- 多层、高层、超高层住宅设计标准
- 人大版财务管理学__第三章__财务分析
- 健忘的人可多吃九种食物提高记忆力
- 干挂玻化砖施工工艺
- 文体积极分子之家申请材料改
- 国际市场营销学试题及答案(2013)
- 物理化学第十一章 化学动力学基础练习题(章节练习)
- 三门峡市灵宝市三年级英语(上册)期中考试试卷
- 孝感科技大学英语等级考试二级考题
- 建设工程造价咨询合同(示范文本)
- 全概率公式和贝叶斯公式练习题之令狐文艳创作
- 于娟《生命日记》
- 九年级化学下册课题3 水的组成教案与教学反思
- 虎纹捕鸟蛛毒素-X的化学合成及其鉴定
- RAMSIS软件在汽车人机工程设计中的应用
- 励志标语口号_具备激励的高三各班黑板报上的誓言
- 公司客户管理表格