MFC路之3 对话框

  1. 对话框概述

    (1)Visual C++中,对话框是一个真正的窗口。对话框不仅可以接收消息,而且还可以被移动和关闭,甚至可以在其客户区中进行绘图。因此,可以将对话框看成一个大容器,在它上面能够放置各种各样的标准及扩展控件,使程序支持用户输入的手段更加丰富。如图所示:

    wKioL1NNRrixgHMgAABNqL4NOAQ358.jpg

    (2) 一般的说,Windows应用程序中,对话框分为模态对话框和非模态对话框两种,这两种对话框的区别在于当对话框打开时是否允许用户进行其他对象的操作。

    模态对话框是指在用户想要进行对话框以外的应用程序操作时必须首先对该对话框进行响应。

    非模态对话框与模态对话框不同,当用户打开非模态对话框时,仍然可以操作其他对话框。

  2. 创建对话框

    (1)对话框编辑器:对话框的设计区域称为对话框编辑器。

    (2)无论是模态对话框还是非模态对话框,都需要拥有相应的对话框模板资源和新的对话框类,二者的创建都是遵顼一下步骤。

    <1>添加一个新的对话框资源并用对话框编辑器设计对话框。

    <2>创建新的对话框类,该类应从CDialog类派生。

    <3>使用ClassWizard为对话框类加入与控件相关联的成员变量。

    <4>在对话框类中添加需要的消息处理。

    所谓消息处理函数即窗口过程,在这个函数中,不同的消息将用switch分支语句分配到不同的处理程序中去,消息处理函数在应用程序中的功能如图所示:

    wKioL1NNRu3jzURSAABu0tZI6Uc468.jpg

    <5>创建对话框并显示。

  3. 对话框的数据交换

    对话框的数据成员变量存储了与控件响应的数据。在对话框运行后,数据变量需要和控件交换数据,以完成输入或输入功能。

    Visual C++的对话框中数据交换通过调用UpdateData函数来实现。UpdateData函数原型如下:

    BOOL UpdateData(BOOL bSaveAndValidate =TRUE); UpdateData函数只有一个布尔类型参数bSaveAndValidate,其决定了数据传送的方向。若参数为TRUE,即调用UpdateData(TRUE),表示将数据从对话框的控件中传送到对应的数据成员中;若参数值为FALSE,即调用UpdateData(FALSE),则表示将数据从数据成员中传送给相应的控件。

  4. 模态对话框和非模态对话框

    (1)模态对话框垄断了用户的输入,当一个模态对话框打开时,用户只能与该对话框进行交互,而其他用户界面对象收不到输入信息。模态对话框下,用户需要操作目标对话框就必须先操作模态对话框,如图所示,就是用户对话框的处理。

    wKioL1NNRy2BlqaHAAAvkgZLeIg678.jpg

    (2)非模态对话框允许用户在处理非模态对话框的同时处理目标对话框,其不会垄断用户的输入。如图所示:

    wKioL1NNR02inDs8AABJo4DPyFo521.jpg


  5. 思考和习题

    (1)如何理解数据交换技术的原理

    (2)给控件添加事件的操作步骤分为哪些

    (3)如何创建属性对话框、向导页对话框和几种公用对话框。

    (4)简述对话框的创建流程


你可能感兴趣的:(模态对话框,非模态对话框)