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()
相关推荐
gz927cool4 小时前
大模型做导师之开源项目学习(lightRAG)
学习·开源·mfc
澄澈天空4 小时前
C++ MFC添加RichEditControl控件后,程序启动失败
c++·mfc
云中飞鸿2 天前
MFC中CString的Format、与XML中的XML_SETTEXT格式化注意
xml·c++·mfc
专注VB编程开发20年2 天前
除了 EasyXLS,加载和显示.xlsx 格式的excel表格,并支持单元格背景色、边框线颜色和粗细等格式化特性
c++·windows·excel·mfc·xlsx
神仙别闹3 天前
基于MFC实现的键盘电子乐器演奏程序
c++·计算机外设·mfc
万能的小裴同学5 天前
MFC 自定义十六进制显示控件
开发语言·c++·mfc
笔记_blog11 天前
[MFC] 使用控件
c++·mfc
獨枭12 天前
在 MFC 应用中集成 WebView2
c++·mfc
獨枭12 天前
MFC 应用最小化到系统托盘
c++·mfc