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()
相关推荐
鸿芯微控科技2 天前
MFC关断后还有流量怎么办?零流量、阀门泄漏、压差与Python分析
c++·python·mfc·质量流量控制器·关断泄漏·零流量测试
鸿芯微控科技3 天前
MFC量程怎么选?最小流量、满量程、调节比与误差计算
c++·python·mfc·流量控制·设备选型·质量流量控制器
TunerT_TQ11 天前
Valhalla 静态工程审阅 #021|华为MindSpore 源码证据驱动评测【大厂开源基础设施特辑】
c++·开源·github·mfc·#大模型开源·#华为开源·#深度学习
蒙奇·D·路飞-11 天前
OpenClaw:开源的《合金弹头》精神续作与终极本地部署指南
c++·开源·mfc
TunerT_TQ11 天前
Valhalla 静态工程审阅 #018|MMCV 源码证据驱动评测【大厂开源基础设施特辑】
c++·开源·mfc·#计算机视觉·#商汤科技·#openmmlab·#静态源码审计
鸿芯微控科技13 天前
MFC质量流量控制器流量不准怎么排查?设定值、反馈值与参考流量对比,附Python代码
c++·python·mfc
鸿芯微控科技13 天前
MFC气体转换系数怎么用?标定气体、换算方向与Python批量计算
c++·python·mfc
小小龙学IT18 天前
C++ Placement New 与显式析构:手动对象生命周期管理的艺术
c++·windows·mfc
蕓晨1 个月前
MFC实现画图菜单小程序
c++·mfc
浩浩测试一下1 个月前
windows 加壳工具代码实现02 - 加壳界面实现MFC
windows·mfc·免杀·加壳器·pe应用