在本章中,无涯教程将介绍对话框(Dialog), Windows应用程序经常通过对话框与用户通信,CDialog类提供了用于管理对话框的界面,Visual C ++对话框编辑器使设计对话框和创建其对话框模板资源变得容易。
-
创建对话3对象是两阶段操作-
构造对话框对象。
创建对话框窗口。
通过创建一个新的Win32项目来研究一个简单的示例。
步骤1 - 打开Visual Studio,然后单击File→New→Project 菜单选项。
步骤2 - 现在,您可以看到"New Project"对话框。
步骤3 - 在左侧窗格中,选择Template→Visual C ++→Win32。
步骤4 - 在中间窗格中,选择Win32 Project。
步骤5 - 在"Name"字段中输入项目名称" MFCDialogDemo",然后单击"OK"继续。您将看到以下对话框。
步骤6 - 单击"Next"。
步骤7 - 选择上方对话框中显示的选项,然后点击完成。
步骤8 - 创建了一个空项目(empty project)。
步骤9 - 要使其成为MFC项目,请右键单击该项目,然后选择"Property"。
步骤10 - 在左侧部分,单击配置Properties→General。
步骤11 - 在"Project Default"部分中选择"Shared DLL中使用MFC"选项,然后单击"OK"。
步骤12 - 添加新的源文件(new source file)。
步骤13 - 右键单击您的项目,然后选择Add→New Item。
步骤14 - 在"Templates"部分中,单击C ++文件(.cpp)
步骤15 - 将"Name"设置为"Example",然后单击"Add"。
步骤16 - 要创建应用程序,无涯教程需要添加一个类并从MFC的CWinApp派生它。
#include <afxwin.h> class CExample : public CWinApp { public: BOOL InitInstance(); };
创建对话框
步骤1 - 要创建一个对话框,请在解决方案资源管理器中右键单击Resource Files文件夹,然后选择Add→Resource。
步骤2 - 在"Add Resource"对话框中,选择"Dialog",然后单击"New"。
步骤3 - 对话框需要一些准备,然后才能以编程方式实际创建它。
步骤4 - 首先可以将对话框手动创建为文本文件(在资源文件中)。
步骤5 - 现在,您可以看到在"Resource Files"下创建的MFCDialogDemo.rc文件。
步骤6 - 资源文件在设计器中打开,可以将其作为文本文件打开,右键单击资源文件,然后选择"Open With"。
步骤7 - 选择"Source Code(Text)"编辑器,然后单击"Add"按钮。
步骤8 - 返回设计器并右键单击对话框,然后选择"Properties"。
步骤9 - 您需要从众多选项中进行选择。
步骤10 - 与大多数其他控件一样,必须标识一个对话框,对话框的标识符(ID)通常以IDD_开头,让无涯教程将ID更改为IDD_EXAMPLE_DLG。
Dialog Location
由于通常将对话框创建为其他控件的父级,因此其位置取决于其与父级窗口或桌面之间的关系。
如果您在"Properties"窗口中查看,则会看到两个字段X Pos和Y Pos。
X是从左边界到对话框左边界的距离。
Y是从顶部边框到对话框顶部边框的距离。
默认情况下,这些字段设置为零,如果将这两个尺寸指定为0,则将设置对话框的左边界和上边界,以便该对象出现在屏幕的中间中央。
Dialog Box Dimensions
对话框的尺寸是指其宽度和高度。您可以在设计器窗口中借助鼠标调整宽度和高度的大小。
您可以在状态栏上看到宽度和高度的变化。
Dialog Box Methods
用于在屏幕上显示对话框的基类是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; }
Modal Dialog Boxes
对话框有两种类型-modeless和modal。模态对话框和无模态对话框的不同之处在于创建和显示对话框的过程。
Modeless Dialog
对于Modeless对话框,必须在对话框类中提供自己的公共构造函数。
要创建Modeless对话框,请调用公共构造函数,然后调用对话框对象的Create成员函数来加载对话框资源。
您可以在构造函数调用期间或之后调用Create。如果对话框资源具有WS_VISIBLE属性,则对话框将立即出现。
否则,必须调用其ShowWindow成员函数。
Modal Dialog
要创建Modal对话框,请调用CDialog中声明的两个公共构造函数之一。
接下来,调用对话框对象的 DoModal 成员函数以显示对话框并管理与对话框的交互,直到用户选择"OK"或"Cancel"为止。
DoModal的这种管理使对话框成为模态,对于Modal对话框,DoModal会加载对话框资源。
步骤1 - 要以Modal显示对话框,请在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 -编译并执行上述代码后,您将看到以下对话框。
对话框应用
Microsoft Visual Studio提供了一种更轻松的方法来创建主要基于对话框的应用程序,以下是使用Visual Studio模板创建对话框基础项目的步骤-
步骤1 - 打开Visual Studio,然后单击File→New→Project 菜单选项。
步骤2 - 在左侧窗格中,选择Template→Visual C ++→MFC。
步骤3 - 在中间窗格中,选择" MFC Application"。
步骤4 - 在"Name"字段中输入项目名称" MFCModalDemo",然后单击"OK"继续。您将看到以下对话框。
步骤5 - 单击下一步。
步骤6 - 选择上述对话框中显示的选项,然后单击"Next"。
步骤7 - 选中对话框中具有的所有选项,如"最大化和最小化框",然后单击"Next"。
步骤8 - 单击下一步。
步骤9 - 它将生成这两个类,您可以更改类的名称,然后单击"Finish"。
步骤10 - 现在您可以看到MFC向导默认创建了该对话框和项目文件。
步骤11 - 运行此应用程序时,将看到以下输出。
参考链接
https://www.learnfk.com/mfc/mfc-dialog-boxes.html
标签:MFC,单击,对话框,步骤,无涯,创建,CDialog,CExampleDlg From: https://blog.51cto.com/u_14033984/8762206