持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
介绍
编写MFC程序需要包含#include <afxwin.h>头文件,在这个头文件是咋编写MFC的必要头文件,就像C语言必须要#include<stdio.h>一样,他的内部主要定义了定义MFC的核心和标准组件。
重要类型:
CwinApp 他是一个应用程序类,在他中有定义到一个程序入口的虚函数 virtual BOOL InitInstance(); 在派生类中必须对它进行重写(所有的虚函数在子类中都必须进行重写 ,否则会出现报错)。在创建窗口前必须对其进行构造。然而CWinApp派生自 CWinThread,它表示这个程序的执行的主线程,在主线程中可能会有一个或者多个线程同时存在。
CFrameWnd 这个类主要用于创建程序的主窗口,他是一个一个框架类,可想而知他可以支持系统中所需要使用到的一些工具条控制条状态条等等的创建。也因此有大量的函数可以供我们便捷使用。
MyWinApp.h
#pragma once
#include <afxwin.h>
class MyWinApp :public CWinApp
{
public:
virtual BOOL InitInstance();//子类的重写
};
class MyCFrameWnd :public CFrameWnd
{
public:
MyCFrameWnd();//构造函数
};
MyWinApp.cpp
#include "MyWinApp.h"
BOOL MyApp::InitInstance()
{
MyWinApp my = new MyWinApp();
my->ShowWindow(this->m_nCmdShow);//显示窗口
my->UpdateWindow();更新窗口
//这里可以用一个共有的变量来保存框架类对象的指针
return true;
}
MyCFrameWnd::MyCFrameWnd()
{
Create(NULL, TEXT("MFC"));//创建窗口
}
mfc的编译
在对项目右键点击属性后,在配置属性中找到常规一项,在MFC使用中选择共享dll中使用mfc。
只有在配置好他的环境后代码才可以正常编译。
程序的执行流程
1.在开始运行后,会首先对程序的对象进行实例化。
2.会直接进入InitInstance函数。
3.系统会为架构类动态的分配空间,并且会对创建一个窗口。(也就是进入了架构类的构造函数)
4.会顺序执行InitInstance函数后面的内容。