首页 > 其他分享 >无涯教程-MFC - 对话框

无涯教程-MFC - 对话框

时间:2023-12-10 17:31:36浏览次数:37  
标签:MFC 单击 对话框 步骤 无涯 创建 CDialog CExampleDlg

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

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

    • 构造对话框对象。

    • 创建对话框窗口。

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

步骤1 - 打开Visual Studio,然后单击File→New→Project 菜单选项。

步骤2 - 现在,您可以看到"New Project"对话框。

New Project Dialog Box

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

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

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

MFCDialogDemo Project

步骤6 - 单击"Next"。

MFCDialogDemo Setting

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

MFCDialogDemo Options

步骤8 - 创建了一个空项目(empty project)。

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

MFCDialogDemo Property

步骤10 - 在左侧部分,单击配置Properties→General。

步骤11 - 在"Project Default"部分中选择"Shared DLL中使用MFC"选项,然后单击"OK"。

步骤12 - 添加新的源文件(new source file)。

步骤13 - 右键单击您的项目,然后选择Add→New Item。

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

MFCDialogDemo Add Item

步骤15 - 将"Name"设置为"Example",然后单击"Add"。

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

#include <afxwin.h>

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

创建对话框

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

Add Resource

步骤2 - 在"Add Resource"对话框中,选择"Dialog",然后单击"New"。

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

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

步骤5 - 现在,您可以看到在"Resource Files"下创建的MFCDialogDemo.rc文件。

MFCDialogDemo FIle

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

Open With MFCDialogDemo File

步骤7 - 选择"Source Code(Text)"编辑器,然后单击"Add"按钮。

Source Code Editor

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

DialogBox Select Properties

步骤9 -  您需要从众多选项中进行选择。

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

Dialog Location

由于通常将对话框创建为其他控件的父级,因此其位置取决于其与父级窗口或桌面之间的关系。

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

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

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

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

Dialog Box Dimensions

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

Dialog Box Dimension

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

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 -编译并执行上述代码后,您将看到以下对话框。

Dialog Box

对话框应用

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

步骤1 - 打开Visual Studio,然后单击File→New→Project 菜单选项。 

Dialog Based Project Template

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

步骤3 - 在中间窗格中,选择" MFC Application"。

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

MFCModalDemo Application2

步骤5 - 单击下一步。

MFCModalDemo Type

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

MFCModalDemo Application Options

步骤7 - 选中对话框中具有的所有选项,如"最大化和最小化框",然后单击"Next"。

MFCModalDemo Advanced Features

步骤8 - 单击下一步。

MFCModalDemo Generated Classes

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

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

DialogBox Application

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

MFCModalDemo Result

参考链接

https://www.learnfk.com/mfc/mfc-dialog-boxes.html

标签:MFC,单击,对话框,步骤,无涯,创建,CDialog,CExampleDlg
From: https://blog.51cto.com/u_14033984/8762206

相关文章

  • 无涯教程-MFC - 环境设置
    MicrosoftVisualC++是用于为MicrosoftWindows操作系统创建应用程序的编程环境。要在C++应用程序中使用MFC框架,必须已安装MicrosoftVisualC++或MicrosoftVisualStudio,MicrosoftVisualStudio还包含MicrosoftVisualC++环境。Microsoft提供了VisualStudio的免费版......
  • 无涯教程-MFC - VC++项目
    VisualStudio包括几种VisualC++项目模板,这些模板有助于创建基本程序结构,菜单,工具栏,图标,并包含适合您要创建的项目类型的语句。在MFC中,您可以使用以下项目模板。Sr.No.Remark1MFCApplicationMFC应用程序是基于Microsoft基础类(MFC)库的Windows可执行应用程序,创建MF......
  • 无涯教程-MFC - 简介
    微软基础类库(英语:MicrosoftFoundationClasses,简称MFC)是一个微软公司提供的类库(classlibraries),以C++类的形式封装了WindowsAPI,并且包含一个(也是微软产品的唯一一个)应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件......
  • 无涯教程-LINQ - 对象
    LINQtoObjects可以使用支持IEnumerable<T> 的任何LINQ查询来访问内存中的数据集合,而无需使用LINQ提供程序(API),例如LINQtoSQL或LINQtoXML。LINQ对象介绍LINQtoObjects中的查询仅返回通常为IEnumerable<T> 类型的变量,简而言之,LINQtoObjects提供了一种较新的集合方法......
  • 无涯教程-LINQ - SQL查询
    LINQtoSQL提供了用于将关系数据作为对象进行管理的基础结构(运行时)。它是.NETFramework3.5版的组件,可以将对象模型的语言集成查询转换为SQL,然后将这些查询发送到数据库以供执行。从数据库获取输出后,LINQtoSQL再次将其转换为对象。LINQtoSQL简介对于大多数ASP.NET开发......
  • 无涯教程-LINQ - 环境设置
    在开始LINQ程序之前,最好首先了解设置LINQ环境的细微差别,LINQ需要一个.NET框架,这是一个革命性的平台,可以具有多种应用程序,LINQ查询可以方便地用C#或VisualBasic编写。Microsoft通过VisualStudio提供了针对这两种语言的工具,即C#和VisualBasic。无涯教程的示例都是在VisualSt......
  • MFC CStatic 里面加载图片
    ▲效果头文件新增空间指针:private:CStatic*pBMP;BOOLCMFCApplicationBMPDlg::OnInitDialog()里面初始化://TODO:在此添加额外的初始化代码//初始化字段pBMP=(CStatic*)GetDlgItem(IDC_STATIC_BMP);//除了添加控件,还有这种方式获得控件的方式。pBMP->Mod......
  • MFC CListVtrl 控件简单测试
    ▲样式Demo关联控件变量m_CList,在属性中将视图(View)设置成Report(报表)模式。在BOOLCMFCApplication4LlisBoxDlg::OnInitDialog()初始化函数中添加测试代码://TODO:在此添加额外的初始化代码//m_CList.SetView(1);//视图View要改成Report报表模式//设置风格样......
  • Angular 应用里异步打开对话框的技术实现
    constdialog=this.launchDialogService.openDialog();dialog.pipe(take(1)).subscribe();这段代码涉及到Angular中处理对话框(Dialog)的逻辑,其中openDialog方法返回一个Observable对象。我们将分两部分来详细解释这段代码。1.openDialog方法首先,我们来讨论openDial......
  • [MFC]如何将数据保存为CSV格式
    BOOLWriteCsv(CStringstrText){CStringstrPath;strPath.Format(_T("D:\\CSV"));if(!CFileSystemHelper::IsDirectoryExist(strPath))//判断目录存不存在{CFileSystemHelper::CreateDirectory(strPath);//可创建递归目录}CString......