如何创建与使用MFC对话框工程

目录

一、MFC对话框工程的创建

1.直接打开自己的编辑器——Visual Studio 2022,点击创建新项目

 2.项目模板选择【MFC应用】

3.给工程命名与工程路径选择

 4.应用程序类型选择【基于对话框】

 应用程序类型不同的区别:

二、对话框各部分的功能与用处

        1.解决方案资源管理器中的文件介绍

        1.pch.h 和 pch.cpp

        2. [project_name].cpp

        3. [project_name].Dlg.cpp 和 [project_name].Dlg.h

        1. .rc 文件 

        2. .rc2 文件

        3.  .ico 文件

1. CAboutDlg

2. xxxApp

3. xxxDlg

2.资源视图

        1. IDD_MY_DIALOG

        2. IDD_ABOUTBOX

三、为对话框添加控件

 1.在应用程序的窗口的界面右键可以打开窗口的属性

 2.控件

1. 静态文本框 (Static)

2. 编辑框 (Edit)

3. кноп (Button)

4. 列表框 (List Box)

5. 组合框 (Combo Box)

6. 单选钮 (Radio Button)

7. 复选钮 (Check Box)

8. 图片框 (Picture Control)

9. 滚动条 (Scroll Bar)

3、拖动实现自己想要的效果


一、MFC对话框工程的创建

1.直接打开自己的编辑器——Visual Studio 2022,点击创建新项目

 2.项目模板选择【MFC应用】

3.给工程命名与工程路径选择

 4.应用程序类型选择【基于对话框】

 应用程序类型不同的区别:

  1. 单个文档:Single Document Interface (SDI) 应用程序SDI 应用程序只能打开一个文档,对应一个窗口。一个窗口可以包含菜单、工具栏、状态栏和其他控件,以及由文档提供的内容。SDI 应用程序通常用于创建简单的单文档计算机辅助设计 (CAD)、绘图等应用程序。
  2. 多个文档:Multiple Document Interface (MDI) 应用程序,MDI 应用程序可以打开多个文档,每个文档都有自己的窗口,这些窗口位于一个主应用程序窗口内。MDI 应用程序通常包括菜单、工具栏、状态栏和其他控件。MDI 应用程序适用于需要同时操作多个文档的应用程序,例如文本编辑器、电子表格等。
  3. 基于对话框:对话框应用程序通过一系列对话框来展示所有的用户界面。每个对话框都是一个包含了控件和对话框模板的窗口。对话框应用程序适合用于开发简单的应用程序,例如工具、向导和对话框式的应用程序。
  4. 多个顶层文档:也叫控制台应用程序,是一种基于控制台的命令行界面 (CLI) 应用程序。它通常被用于开发脚本解析器、计算器、操作系统等应用程序。


二、对话框各部分的功能与用处

        1.解决方案资源管理器中的文件介绍

        创建完成后你会在【解决方案资源管理器】中的【源文件】中看到三个现有的【.cpp】文件,以是否可以删除重建为目的来了解各个文件的功能。

当我们使用 Visual Studio 创建一个新的对话框程序时,对话框程序所关联的三个现有源文件依次为:

        1.pch.h 和 pch.cpp

        这是预编译头文件的源文件,用于加快项目的编译速度。大多数情况下,你不需要删除这两个文件,因为它们是自动创建的并且为 Visual Studio 的构建过程所必需。

        2. [project_name].cpp

        这个源文件包含了 WinMain 函数的实现和窗口消息处理函数,这个文件也是自动创建的。在这个文件中,你可以添加你自己的代码来与窗体进行交互。如果你删除这个文件,那么整个程序将无法编译运行,因此不建议删除。

        3. [project_name].Dlg.cpp 和 [project_name].Dlg.h

        这是对话框的 GUI 代码和类定义所在的文件。在 .cpp 文件中,你可以编写对话框窗口的事件和操作处理代码;在 .h 文件中,你则可以定义类和变量、声明函数等。一般情况下,你不需要删除这两个文件,而是在这些文件的基础之上进行修改和开发。

在一个新的对话框程序中,通常会有三个主要的资源文件:

        1. .rc 文件 

        资源文件的主文件,用于定义应用程序中需要用到的资源,如对话框模板、位图、字符串、菜单等等,对话框程序的 GUI 就是通过 .rc 文件中的资源信息来构建的

        2. .rc2 文件

        一种辅助资源文件,通常情况下,它是不存在的,只有当 .rc 文件中的用户资源(例如图标、菜单等)过多,超出了编译器默认能处理的限制时,.rc 文件就会被分割成多个部分,每一个部分对应一个 .rc2 文件,编译器会自动链接这些分割后的资源文件。

        3.  .ico 文件

      窗口图标资源文件,通常用于设置程序的图标,例如程序窗口标题栏、任务栏以及桌面快捷方式上等。你可以通过在资源编辑器中添加新的图标资源,然后将其设置为程序的默认图标,或者通过代码动态设置窗口的图标。.ico文件通常采用32x32像素和16x16像素两种大小。

在对话框程序中,CAboutDlg、xxxApp、xxxDlg 是三个非常重要的类,它们分别承担着不同的角色,具体作用如下:

1. CAboutDlg

CAboutDlg 是 MFC 框架中的一个对话框类,通常用于显示应用程序的关于信息界面。CAboutDlg 类通常继承自 CDialog,它通过在资源文件中定义一个对话框模板(通常设计为静态界面),然后在 OnInitDialog 中读取模板,进行处理和显示,最终通过 ShowModal 方法显示出来。在关于信息界面,可以显示应用程序的版本号、版权信息、开发者信息等等,为用户提供了更多的应用程序相关信息。

2. xxxApp

xxxApp 类是 MFC 框架中的应用程序类,它的任务是提供一个应用程序的管理框架。通常情况下,你需要从 CWinApp 类中继承一个子类,然后实现该子类的 InitInstance 函数。在 InitInstance 函数中,通常需要做如下操作:

a. 实例化主窗口对话框,例如在 AfxInitApp 中实现对话框的初始化

b. 给全局变量赋值

c. 注册窗口类,调用 AfxRegisterWndClass

d. 调用 CreateWindow 进行窗口对象的创建

e. ShowWindow 显示窗口对象

f. UpdateWindow 使显示内容立即刷新

3. xxxDlg

xxxDlg 类是 MFC 框架中的一个基本对话框类,它通常继承自 CDialog。在对话框程序中,每一个对话框窗口都需要对应一个 xxxDlg 类,这个类主要负责处理窗口事件和消息响应等。在对话框类中,你可以添加控件和控制器(即包括各种输入输出控件),以及附加事件、本地变量等等,用于在窗口程序中实现各种操作。

综上所述,CAboutDlg、xxxApp、xxxDlg 分别扮演着不同的角色,其中 CAboutDlg 类用于显示应用程序的关于信息界面,xxxApp 用于提供应用程序管理框架,而 xxxDlg 则是窗口程序的基本类,用于处理窗口事件和消息响应等。

2.资源视图

        IDD_MY_DIALOG 和 IDD_ABOUTBOX 是在对话框程序中定义对话框 ID 的两个常量,它们的作用分别如下:

        1. IDD_MY_DIALOG

IDD_MY_DIALOG 是一个常量,用于标识我们自己创建的对话框窗口的 ID。在创建对话框窗口的时候,可以通过指定这个 ID 来让应用程序知道我们要使用哪个对话框窗口模板。举个例子,我们可以在代码中使用下面的语句来创建一个名为 MyDialog 的对话框窗口:

CMyDialog dlg;
dlg.DoModal();

这里的 CMyDialog 是我们自己定义的对话框窗口类,而 DoModal() 方法会根据 IDD_MY_DIALOG 常量来创建一个对话框窗口并将其显示出来。

        2. IDD_ABOUTBOX

IDD_ABOUTBOX 也是一个常量,它通常用于显示应用程序的关于对话框窗口。在 MFC 应用程序中,可以通过在 CMainFrame 类中添加一个关于对话框窗口来显示应用程序的版本信息、版权和开发者信息等。具体来说,我们可以在 CMainFrame 类中添加如下代码来实现这个功能:

void CMainFrame::OnAbout() 
{
    CAboutDlg dlgAbout;
    dlgAbout.DoModal();
}

这里的 CAboutDlg 是 MFC 提供的一个对话框窗口类,它告诉应用程序我们要使用的是系统默认的关于对话框窗口模板。在 DoModal() 方法中,我们使用 IDD_ABOUTBOX 常量来告诉应用程序显示哪个对话框窗口模板。

三、为对话框添加控件

 1.在应用程序的窗口的界面右键可以打开窗口的属性

所有控件都可以这样进行属性更改

可以根据自己的需求进行更改,下面是常用的两个设置

 2.控件

在对话框程序中,各个控件的作用如下:

1. 静态文本框 (Static)

静态文本框用于显示静态文本信息,例如程序名称、版权信息、标签信息等。静态文本框一般不与用户进行交互,只用于显示信息。

2. 编辑框 (Edit)

编辑框用于让用户输入并编辑文本信息。编辑框有单行、多行、密码框等不同样式,可以实现各种输入需求。用户在编辑框中输入文本后,可以通过程序读取其输入内容。

3. кноп (Button)

按钮用于触发单击或者双击事件,实现各种操作或进入其他对话框。按钮还可以设置正常状态、失效状态、按下状态等不同样式和属性。

4. 列表框 (List Box)

列表框可以用于显示多个选项或列表信息,用户可以从中选择一个或者多个选项。列表框还可以支持拖放操作、移动选项等操作。

5. 组合框 (Combo Box)

组合框是一种特殊的列表框,它既可以输入文本信息,也可以从列表中选择一个选项。组合框还可以很方便地实现自动完成、数据过滤等功能。

6. 单选钮 (Radio Button)

单选钮可以让用户在多个选项中选择一个,通常用于互斥的选择操作。单选钮一般需要成组放置,用户只能选择其中的一个选项。

7. 复选钮 (Check Box)

复选钮通常用来进行多个选项的选择,可以同时选中多个选项,不同于单选钮。复选钮可以设置选中和取消选中状态,并支持三态复选钮,即未选中、选中和部分选中。

8. 图片框 (Picture Control)

图片框通常用来显示图标、位图等图片信息。它可以根据外部文件或者资源中的图片内容进行显示,还可以控制图片的位置、大小和显示样式等。

9. 滚动条 (Scroll Bar)

滚动条通常用来调整显示区域的位置,以便显示具有超出可见区域的信息。滚动条既可以垂直滚动,也可以水平滚动,并可以设置滚动位置、滚动范围和滚动增量等控制属性。

这些对话框控件是对话框程序中最常用的控件。在实际应用中,我们可以通过这些控件来实现各种不同的用户交互和信息显示需求。

3、拖动实现自己想要的效果

  • 12
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写的什么石山代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值