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()
相关推荐
越甲八千12 小时前
MFC listctrl修改背景颜色
c++·mfc
炯哈哈12 小时前
【上位机——MFC】序列化机制
开发语言·c++·mfc·上位机
编程乐趣15 小时前
点下4个Winform UI开源控件库
ui·开源·mfc
越甲八千2 天前
通俗的理解MFC消息机制
c++·mfc
Despacito0o2 天前
QMK键盘固件配置详解
c++·计算机外设·mfc
炯哈哈3 天前
【上位机——MFC】对话框
开发语言·c++·mfc·上位机
炯哈哈3 天前
【上位机——MFC】单文档和多文档视图架构
开发语言·c++·mfc·上位机
炯哈哈6 天前
【上位机——MFC】对象和控件绑定
开发语言·c++·mfc·上位机
炯哈哈14 天前
【上位机——MFC】视图
开发语言·c++·mfc·上位机
炯哈哈15 天前
【上位机——MFC】文档
开发语言·c++·mfc·上位机