英文链接源链接 [12246]
contenteditable="true"

MFC - Dialog Boxes 介绍

在本章中,我们将介绍对话框。 Windows应用程序经常通过对话框与用户通信。 CDialog类提供了用于管理对话框的界面。 Visual C ++对话框编辑器使设计对话框和创建其对话框模板资源变得容易。

  • 创建对话框对象是两阶段操作-

    • 构造对话框对象。

    • 创建对话框窗口。

让我们通过创建一个新的Win32项目来研究一个简单的示例。

步骤1 -打开Visual Studio,然后单击文件→新建→项目菜单options。

第2步-现在,您可以看到"新建项目"对话框。

New Project Dialog Box

步骤3 -在左侧窗格中,选择模板→Visual C ++→Win32。

第4步-在中间窗格中,选择Win32 Project。

步骤5 -在"名称"字段中输入项目名称" MFCDialogDemo",然后单击"确定"继续。您将看到以下对话框。

MFCDialogDemo Project

步骤6 -单击"下一步"。

MFCDialogDemo Setting

第7步-选择上方对话框中显示的options,然后点击完成。

MFCDialogDemo Options

步骤8 -创建了一个空项目。

步骤9 -要使其成为MFC项目,请右键单击该项目,然后选择"属性"。

MFCDialogDemo Property

步骤10 -在左侧部分,单击配置属性→常规。

步骤11 -在"项目默认值"部分中选择"在共享DLL中使用MFC"options,然后单击"确定"。

步骤12 -添加新的源文件。

步骤13 -右键单击您的项目,然后选择添加→新建项目。

步骤14 -在"模板"部分中,单击C ++文件(.cpp)

MFCDialogDemo Add Item

步骤15 -将"名称"设置为"示例",然后单击"添加"。

步骤16 -要创建应用程序,我们需要添加一个类并从MFC的CWinApp派生它。

#include <afxwin.h>

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};

对话框创建

步骤1 -要创建一个对话框,请在解决方案资源管理器中右键单击Resource Files文件夹,然后选择Add→Resource。

Add Resource

步骤2 -在"添加资源"对话框中,选择"对话框",然后单击"新建"。

第3步-对话框需要一些准备,然后才能以编程方式实际创建它。

步骤4 -首先可以将对话框手动创建为文本文件(在资源文件中)。

第5步-现在,您可以看到在"资源文件"下创建的MFCDialogDemo.rc文件。

MFCDialogDemo FIle

步骤6 -资源文件在设计器中打开。可以将其作为文本文件打开。右键单击资源文件,然后选择"打开方式"。

Open With MFCDialogDemo File

步骤7 -选择"源代码(文本)"编辑器,然后单击"添加"按钮。

Source Code Editor

步骤8 -返回设计器并右键单击对话框,然后选择"属性"。

DialogBox Select Properties

第9步-您需要从众多options中进行选择。

步骤10 -与大多数其他控件一样,必须标识一个对话框。对话框的标识符(ID)通常以IDD_开头。让我们将ID更改为IDD_EXAMPLE_DLG。

对话位置

对话框必须"物理上"位于应用程序上。由于通常将对话框创建为其他控件的父级,因此其位置取决于其与父级窗口或桌面之间的关系。

如果您在"属性"窗口中查看,则会看到两个字段X Pos和Y Pos。

对话位置
  • X是从监视器左边界到对话框左边界的距离。

  • Y是从监视器顶部边框到对话框顶部边框的距离。

默认情况下,这些字段设置为零。您也可以如上所述进行更改。

如果将这两个尺寸指定为0,则将设置对话框的左边界和上边界,以便该对象出现在屏幕的中间中央。

对话框尺寸

对话框的尺寸是指其宽度和高度。您可以在设计器窗口中借助鼠标调整宽度和高度的大小。

Dialog Box Dimension

您可以在状态栏上看到宽度和高度的变化。

对话框方法

用于在屏幕上显示对话框的基类是CDialog类。要创建对话框,我们需要从CDialog派生一个类。 CDialog类本身提供了三个构造函数,如下所示:

CDialog();
CDialog(UINT nIDTemplate, CWnd* pParentWnd = NULL);
CDialog(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);

让我们创建另一个类CExampleDlg并从CDialog派生它。我们将实现其默认的构造函数析构函数,如以下代码所示。

class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
      ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

我们需要在CExample::InitInstance()方法上实例化此对话框,如以下代码所示。

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   
   return TRUE;
}

模态对话框

对话框有两种类型-无模式和模式。模态对话框和无模态对话框的不同之处在于创建和显示对话框的过程。

无模式对话框

  • 对于无模式对话框,必须在对话框类中提供自己的公共构造函数。

  • 要创建无模式对话框,请调用公共构造函数,然后调用对话框对象的Create成员函数来加载对话框资源。

  • 您可以在构造函数调用期间或之后调用Create。如果对话框资源具有WS_VISIBLE属性,则对话框将立即出现。

  • 否则,必须调用其ShowWindow成员函数。

首都对话

  • 要创建模式对话框,请调用CDialog中声明的两个公共构造函数之一。

  • 接下来,调用对话框对象的 DoModal 成员函数以显示对话框并管理与对话框的交互,直到用户选择"确定"或"取消"为止。

  • DoModal的这种管理使对话框成为模态。对于模式对话框,DoModal会加载对话框资源。

第1步-要以模式显示对话框,请在CExample::InitInstance()事件中使用对话框变量调用DoModal()方法-

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}

第2步-这是Example.cpp文件的完整实现。

#include <afxwin.h>
#include "resource.h"

class CExample : public CWinApp {
   public:
      BOOL InitInstance();
};
   
class CExampleDlg : public CDialog {
   public:
      enum { IDD = IDD_EXAMPLE_DLG };
   
      CExampleDlg();
     ~CExampleDlg();
};

CExampleDlg::CExampleDlg():CDialog(CExampleDlg::IDD) {

}

CExampleDlg::~CExampleDlg() {

}

BOOL CExample::InitInstance() {
   CExampleDlg myDlg;
   m_pMainWnd = &myDlg;
   myDlg.DoModal();
   return TRUE;
}
CExample MyApp;

步骤3 -编译并执行上述代码后,您将看到以下对话框。

Dialog Box

基于对话框的应用程序

Microsoft Visual Studio提供了一种更轻松的方法来创建主要基于对话框的应用程序。以下是使用Visual Studio中可用的项目模板创建对话框基础项目的步骤-

步骤1 -打开Visual Studio,然后单击文件→新建→项目菜单options。 You can see the New Project dialog box.

Dialog Based Project Template

步骤2 -在左侧窗格中,选择模板→Visual C ++→MFC。

第3步-在中间窗格中,选择" MFC应用程序"。

步骤4 -在"名称"字段中输入项目名称" MFCModalDemo",然后单击"确定"继续。您将看到以下对话框。

MFCModalDemo Application2

步骤5 -单击下一步。

MFCModalDemo Type

步骤6 -选择上述对话框中显示的options,然后单击"下一步"。

MFCModalDemo Application Options

第7步-选中对话框中具有的所有options,例如"最大化和最小化框",然后单击"下一步"。

MFCModalDemo Advanced Features

步骤8 -单击下一步。

MFCModalDemo Generated Classes

第9步-它将生成这两个类。您可以更改类的名称,然后单击"完成"。

步骤10 -现在您可以看到MFC向导默认创建了该对话框和项目文件。

DialogBox Application

步骤11 -运行此应用程序时,将看到以下输出。

MFCModalDemo Result
点我分享笔记