MFC开发:如何创建第一个MFC应用程序

文章目录

一、概述

MFC 是微软提供的一个 C++ 类库,用于简化 Windows 应用程序的开发。它封装了 Windows API,提供面向对象的接口,帮助开发者更高效地创建图形用户界面(GUI)应用程序。MFC 自 1992 年随 Microsoft C/C++ 7.0 发布以来,成为 Windows 开发的重要工具。

MFC 的核心作用:

  • 封装 Windows API:MFC 将复杂的 Windows API 封装为易于使用的 C++ 类,简化了窗口管理、消息处理等任务。
  • 提供应用程序框架:MFC 提供了应用程序框架(如 CWinApp、CFrameWnd),帮助开发者快速搭建应用程序的基本结构。
  • 支持图形用户界面(GUI)开发:MFC 提供丰富的控件类(如按钮、列表框、对话框),简化 GUI 开发。
    支持文档/视图架构:MFC 的文档/视图架构将数据管理与用户界面分离,便于维护和扩展。
    集成开发环境(IDE)支持:MFC 与 Visual Studio 深度集成,提供代码生成和调试工具,提升开发效率。
    兼容性与扩展性:MFC 支持多种 Windows 版本,允许开发者扩展功能或直接调用 Windows API。

二、MFC 的主要组件

  • 应用程序类(CWinApp):管理应用程序的生命周期和主消息循环。
  • 窗口类(CFrameWnd、CDialog):用于创建和管理主窗口及对话框。
  • 文档/视图类(CDocument、CView):实现文档/视图架构,分离数据与界面。
  • 控件类(CButton、CListBox 等):封装常用控件,简化 GUI 开发。
  • 集合类(CArray、CList 等):提供数据存储和管理功能
  • 文件与数据库支持:提供文件操作和数据库访问类(如 CFile、CDatabase)。

三、创建一个MFC窗口

应用程序类型选择"基于对话框":

高级功能中区别取消勾选:

可以更改继承的基类,也可以更改类名称。

默认会生成一个带有两个按钮和一个提示文本框的MFC窗口:

双击按钮后可以直接转到点击按钮后执行的事件函数:

cpp 复制代码
void CMFCApplicationDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	MessageBox(_T("您好"));
	CDialogEx::OnOK();
}

点击"确定按钮"后的结果显示:

四、控件绑定消息函数

我们可以重新创建控件。如下所示:

每一个控件都有一个控件ID,我们可以通过指定的控件ID进行一些操作,比如按钮Button1的ID为"IDC_BUTTON1"

双击按钮可以为按钮生成一个响应函数,当我们点击按钮就会触发这个函数。

函数声明:

cpp 复制代码
public:
	afx_msg void OnBnClickedButton1();
	afx_msg void OnBnClickedButton2();

函数定义:

cpp 复制代码
void CMFCApplicationDlg::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
	MessageBox(_T("您好"));
}


void CMFCApplicationDlg::OnBnClickedButton2()
{
	// TODO: 在此添加控件通知处理程序代码
	MessageBox(_T("大家好"));
}

消息映射表中已经通过按钮的控件ID将点击事件与上述函数进行了绑定:

cpp 复制代码
BEGIN_MESSAGE_MAP(CMFCApplicationDlg, CDialogEx)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplicationDlg::OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, &CMFCApplicationDlg::OnBnClickedButton2)
END_MESSAGE_MAP()

也可以通过类向导将控件与消息函数进行绑定:


点击确定后消息映射表中会生成一个与Button3关联的消息:

cpp 复制代码
BEGIN_MESSAGE_MAP(CMFCApplicationDlg, CDialogEx)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplicationDlg::OnBnClickedButton1)
	ON_BN_CLICKED(IDC_BUTTON2, &CMFCApplicationDlg::OnBnClickedButton2)
	ON_BN_CLICKED(IDC_BUTTON3, &CMFCApplicationDlg::OnClickedButton3)
END_MESSAGE_MAP()
相关推荐
SunkingYang2 小时前
MFC/C++语言怎么比较CString类型最后一个字符
c++·mfc·cstring·子串·最后一个字符·比较
界面开发小八哥2 小时前
MFC扩展库BCGControlBar Pro v36.2新版亮点:可视化设计器升级
c++·mfc·bcg·界面控件·ui开发
R-G-B2 小时前
【15】MFC入门到精通——MFC弹窗提示 MFC关闭对话框 弹窗提示 MFC按键触发 弹窗提示
c++·mfc·mfc弹窗提示·mfc关闭弹窗提示·mfc按键触发 弹窗提示
还债大湿兄1 天前
《C++内存泄漏8大战场:Qt/MFC实战详解 + 面试高频陷阱破解》
c++·qt·mfc
蜉蝣之翼❉5 天前
CRT 不同会导致 fopen 地址不同
c++·mfc
R-G-B5 天前
【02】MFC入门到精通——MFC 手动添加创建新的对话框模板
c++·mfc·mfc 手动添加创建新的对话框
R-G-B6 天前
【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框
c++·mfc·mfc添加控件
chilavert3186 天前
技术演进中的开发沉思-28 MFC系列:关于C++
开发语言·c++·mfc
R-G-B9 天前
【MFC】Combobox下拉框中4个选项,运行后点击下拉框选项不能全部展示出来,只能显示2个选项,需要垂直滚动条滚动显示其余选项
c++·mfc
Vitta_U12 天前
MFC的List Control自适应主界面大小
c++·list·mfc