第四章 对话框.ppt_第1页
第四章 对话框.ppt_第2页
第四章 对话框.ppt_第3页
第四章 对话框.ppt_第4页
第四章 对话框.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四讲 对话框 杨章伟e mail yang505412 课程内容安排 对话框概述创建对话框模态对话框和非模态对话框属性页和向导对话框公用对话框综合练习思考和习题 对话框概述 在VisualC 中 对话框是一个真正的窗口 对话框不仅可以接收消息 而且还可以被移动和关闭 甚至可以在其客户区中进行绘图 因此 可以将对话框看成一个大容器 在它上面能够放置各种各样的标准及扩展控件 使程序支持用户输入的手段更加丰富 如图4 1所示 对话框的种类 一般的说 Windows应用程序中 对话框分为模态 Modal 对话框和非模态 Modeless 对话框两种 这两种对话框的区别在于当对话框打开时是否允许用户进行其他对象的操作 模态对话框是指在用户想要进行对话框以外的应用程序操作时必须首先对该对话框进行响应非模态对话框与模态对话框不同 当用户打开非模态对话框时 依然可以操作其他窗口 模态对话框 模态对话框垄断了用户的输入 当一个模态对话框打开时 用户只能与该对话框进行交互 而其他用户界面对象收不到输入信息 模态对话框下 用户需要操作目标对话框就必须先操作模态对话框 如图4 3所示 这就是用户对模态对话框的处理 非模态对话框 非模态对话框允许用户在处理非模态对话框的同时处理目标对话框 其不会垄断用户的输入 如图4 5所示 对话框编辑器 对话框的设计区域称为对话框编辑器 当读者插入一个新的对话框资源后 打开工作台的资源面板 打开 Dialog 文件夹 可以看到下面有一个ID号为IDD ABOUTBOX对话框 这几乎是每个MFC应用程序所具备的 此外 用户可以添加一个自己的对话框 鼠标右击 Dialog 文件夹 在弹出的快捷方式菜单中选择 InsertDialog 菜单项 这时 不仅在资源面板中多了一个ID号IDD DIALOG1的对话框资源 而且在右边的编辑器中也显示了这个对话框模板的编辑窗口 如图4 6所示 创建对话框 无论是模态对话框还是非模态对话框 都需要拥有相应的对话框模板资源和新的对话框类 二者的创建都是遵循以下步骤 1 添加一个新的对话框资源并用对话框编辑器设计对话框 2 创建新的对话框类 该类应从CDialog类派生 3 使用ClassWizard为对话框类加入与控件相关联的成员变量 4 在对话框类中添加需要的消息处理 5 创建对话框并显示 添加对话框资源 使用AppWizard创建一个单文档视图工程 创建对话框 需要为该工程添加一个对话框 只需在工作台的 ResourceView 选项卡中选择 Dialog 项 右键单击该项并在快捷菜单中单击 InsertDialog 命令 如图4 9所示 添加控件 添加了对话框资源后 即可根据用户的需要在对话框中添加控件 控件的添加在第3章中已经具体讲解过了 此处不再赘述 例如 需要创建一个具有对用户输入的两个数字进行相加的对话框时 那么只需要在上一步骤中创建的对话框中添加相应控件 并设置相关属性即可 如图4 12所示 使用ClassWizard创建对话框类 利用ClassWizard 用户可以十分方便地创建MFC窗口类的派生类 对话框类也不例外 使用ClassWizard加入成员变量 创建好了对话框类后 就可以使用ClassWizard为对话框类加入与控件相关联的成员变量了 添加消息处理函数 所谓消息处理函数即窗口过程 在这个函数中 不同的消息将用switch分支语句分配到不同的处理程序中去 消息处理函数在应用程序中的功能如图4 23所示 添加消息处理函数 双击ClassWizard中的按钮来打开 AddMemberFunction 对话框 在该对话框中添加消息处理函数 事实上 读者可以右击该类 在其中选择 AddWindowsMessageHandle 菜单项 在其中也可添加消息处理函数 显示非模态对话框 例如 要显示一个非模态对话框m Mydlg 其实现代码如下所示 if m Mydlg m hWnd 判断对话框是否已被创建 m Mydlg Create IDD MYDLG 创建对话框IDD MYDLG m Mydlg ShowWindow SW SHOW 显示对话框 显示模态对话框 例如 要创建并显示一个模态对话框 其实现代码如下所示 CMyDlgm Mydlg 定义对象m Mydlgm Mydlg DoModal 创建模态对话框 对话框的数据交换 对话框的数据成员变量存储了与控件相对应的数据 在对话框运行后 数据变量需要和控件交换数据 以完成输入或输出功能 例如 一个编辑框可能需要用来输入 也可能需要用来输出 当用作输入时 用户在其中输入了数值之后 对应的数据成员应该更新与编辑框中的数值相同 当用作输出时 应及时刷新编辑框的内容以反映相应数据成员的变化 因此 对话框就需要一种机制来实现这种数据交换功能 对话框的数据交换 VisualC 的对话框中数据交换通过调用UpdateData函数来实现 UpdataData函数原形如下 BOOLUpdateData BOOLbSaveAndValidaet TRUE UpdataData函数只有一个布尔型参数bSaveAndValidate 其决定了数据传送的方向 若参数值为TURE 即调用UpdateData TRUE 表示将数据从对话框的控件中传送到对应的数据成员中 若参数值为FALSE 即调用UpdateData FALSE 则表示将数据从数据成员中传送给对应的控件 对话框的数据交换 例如 用户在非模态对话框IDD MYDLG的 相加 按钮的处理函数OnOK 函数中键入如下代码来实现数据交换 UpdateData TRUE 将数据从对话框的控件中传送到对应的数据成员中m nSum m nNum1 m nNum2 计算UpdateData FALSE 将数据从数据成员中传送给对应的控件 综合练习 在第3章的 学生个人信息登记表 对话框中 完成如下功能 当用户输入了该对话框中对应信息后 单击 OK 按钮 这些信息将显示到学生信息编辑框中 如图4 38所示 综合练习 设计一个用户登录框 并拥有判断功能 当用户输入正确的用户名 admin 和正确的密码 123456 后显示如图4 39所示结果 否则显示4 40所示错误信息 思考和习题 如何理解数据交换技术的原理 给控件添加事件的操作步骤分别

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论