新建MFC桌面应用程序

简介: 新建MFC桌面应用程序

一、MFC的概念和作用


1、什么MFC?


  全称 Microsoft Fundation Class Library,我们称之为微软基础类库   从硬盘的存在形式上来说MFC就是一个库。   从原理上来说,MFC还是一个程序框架。


2、为什么使用MFC?


  基于框架开发,提供工作效率,减少开发周期,降低开发成本。


二、MFC应用程序的分类


1、使用MFC制作自己的库程序:静态库程序,规则动态库程序,扩展动态库程序


2、使用MFC制作自己的窗口程序:


单文档视图架构程序


      CFrameWnd - 框架窗口类(封装了框架窗口的操作)


      CWinApp - 应用程序类,(封装了关于流程管理)


      CDocument -文档类,(封装了关于数据的管理,例如:提取/转换/存储..)


      CView - 视图窗口类,(封装了关于视图窗口的操作)


多文档视图架构程序


      CMDIChildWnd - 子框架窗口类(封装了子框架窗口的操作)


      CMDIFrameWnd - 主框架窗口类(封装了主框架窗口的操作)


      CWinApp - 应用程序类,(封装了关于流程管理)


      CDocument -文档类,(封装了关于数据的管理,例如:提取/转换/存储..)


      CView - 视图窗口类,(封装了关于视图窗口的操作)


对话框架构程序


      CWinApp - 应用程序类,(封装了关于流程管理)


      CDialog - 对话框窗口类,(封装了关于对话框窗口的操作)


三、MFC类概述


1、CObject - MFC库中绝大部分类的最基类,运行时类信息机制 / 动态创建机制 / 序列化机制


2、CCmdTarget - 消息映射机制的最基类


3、CWinThread / CWinApp - 应用程序类,管理程序流程。


4、CDocument及其子类 - 文档类,管理数据


5、Exceptions - 异常处理类,封装了MFC库中可能出现各种异常情况


6、CFile及其子类 - 文件操作类,封装了文件的读写等等各种操作。


7、CWnd - 所有窗口类的最基类


8、Frame Windows - 框架窗口类,封装了关于框架窗口的各种操作


9、DialogBox - 对话框窗口类,封装了关于各种对话框的操作


10、Views - 视图窗口类,封装了关于各种视图窗口的操作


11、Controls - 控件窗口类,封装了关于各种控件窗口的操作


12、CDC及其子类,绘图设备类,封装了各种绘图设备的操作


13、CGdiObject及其子类,绘图对象类,封装了各种绘图对象的操作


14、Array  / List / Map - 封装了标准中的各种容器结构


15、非CObject类 - 封装了标准中的各种结构的操作,例如:CPoint 、CRect、CTime、CString....


四、制作第一个MFC程序,环境为VS2019


1、新建新建Windows桌面向导


0a2653c851af460fa595bd959398a8f1.png


2、配置项目


0eacb84100b54626af849e6b562bf92a.png


3、将该项目设为启动项


4、修改属性为多字节,静态库中使用MFC


2d65d23f6d4748949b924e4057485923.png


5、新建MFCbase.cpp源文件


2e9b90b2ca334476abebe75bafe6eeaa.png


6、文件内容为:


#include <afxwin.h>
//定义一个自己的框架类(CMyFrameWnd),派生自CFrameWnd
class CMyFrameWnd : public CFrameWnd
{
};
//定义一个自己的应用程序类(CMyWinApp), 派生自CWinApp,并重写父类的成员虚函数  InitInstance(创建并显示框架窗口)
class CMyWinApp : public CWinApp
{
public:
        CMyWinApp();
        virtual BOOL InitInstance();
};
//定义一个非常非常非常重要的全局变量 theApp(爆破点)
CMyWinApp::CMyWinApp()//构造,不写也行,会有默认的
{
}
CMyWinApp theApp;//爆破点
BOOL CMyWinApp::InitInstance()
{//此函数中的this为&theApp
        CMyFrameWnd* pFrame = new CMyFrameWnd;
        pFrame->Create(NULL, "测试");
        this->m_pMainWnd = pFrame;
        pFrame->ShowWindow(SW_SHOW);
        pFrame->UpdateWindow();
        return TRUE;
}


7、程序执行流程:


构造theApp(爆破点)


    1)将&theApp保存到 当前程序线程状态信息 中。


    2)将&theApp保存到 当前程序模块状态信息 中。


进入入口函数(WinMain)


    1)利用 AfxGetThread() / AfxGetApp()获取 &theApp


    2)利用theApp调用应用程序类的成员虚函数InitApplication (初始化)


    3)利用theApp调用应用程序类的成员虚函数InitInstance (创建并显示窗口)


    4)利用theApp调用应用程序类的成员虚函数Run(消息循环)


    5)当没有消息时,利用theApp调用应用程序类成员虚函数OnIdle  (空闲处理)


    6)当程序退出时,利用theApp调用应用程序类成员虚函数ExitInstance (善后处理)


8、运行效果:


4cebaac233b3433da32a72337a77fc60.png


注意:


::开头的函数为WIN32的API函数


Afx开头的函数为MFC中的全局函数



目录
相关文章
|
6月前
MFC应用程序 -- 记事本
MFC应用程序 -- 记事本
33 0
10 MFC - 对话框应用程序框架介绍
10 MFC - 对话框应用程序框架介绍
97 0
|
存储 C++
07 MFC - 用向导生成一个MFC应用程序
07 MFC - 用向导生成一个MFC应用程序
68 0
|
C++ Windows
09 MFC - 创建基于对话框的 MFC 应用程序框架
09 MFC - 创建基于对话框的 MFC 应用程序框架
92 0
|
6月前
|
存储 API Windows
新建MFC桌面应用程序
新建MFC桌面应用程序
24 0
|
6月前
MFC对话框构架程序
MFC对话框构架程序
33 0
|
6月前
MFC编写DLL窗口功能代码
MFC编写DLL窗口功能代码
31 0
|
6月前
MFC应用程序单文档及类向导的使用
MFC应用程序单文档及类向导的使用
61 0
|
6月前
MFC应用程序对话框架构
MFC应用程序对话框架构
38 0
|
程序员
MFC应用程序开发教程2——基于对话框编程
MFC应用程序开发教程2——基于对话框编程
161 1
MFC应用程序开发教程2——基于对话框编程