本帖最后由 lrj2025kernel 于 2026-8-14 10:48 编辑
一、文件注释:
MFC.h与MFC.cpp属于框架代码
MY.h与MY.cpp属于自定义类
MFC.H文件:
[C++] 纯文本查看 复制代码 #define BOOL int
#define TRUE 1
#define FALSE 0
#include <iostream>
using namespace std;
class CObject
{
public:
CObject() {
}
~CObject() {
}
};
class CCmdTarget : public CObject
{
public:
CCmdTarget() {
}
~CCmdTarget() {
}
};
class CWinThread : public CCmdTarget
{
public:
CWinThread() {
}
~CWinThread() {
}
virtual BOOL InitInstance() {
cout << "CWinThread::InitInstance \n";
return TRUE;
}
virtual int Run() {
cout << "CWinThread::Run \n";
return 1;
}
};
class CWnd;
class CWinApp : public CWinThread
{
public:
CWinApp* m_pCurrentWinApp{nullptr};
CWnd* m_pMainWnd{nullptr};
public:
CWinApp() {
m_pCurrentWinApp = this;
}
~CWinApp() {
}
virtual BOOL InitApplication() {
cout << "CWinApp::InitApplication \n";
return TRUE;
}
virtual BOOL InitInstance() {
cout << "CWinApp::InitInstance \n";
return TRUE;
}
virtual int Run() {
cout << "CWinApp::Run \n";
return CWinThread::Run();
}
};
class CDocument : public CCmdTarget
{
public:
CDocument() {
}
~CDocument() {
}
};
class CWnd : public CCmdTarget
{
public:
CWnd() {
}
~CWnd() {
}
virtual BOOL Create();
BOOL CreateEx();
virtual BOOL PreCreateWindow();
};
class CFrameWnd : public CWnd
{
public:
CFrameWnd() {
}
~CFrameWnd() {
}
BOOL Create();
virtual BOOL PreCreateWindow();
};
class CView : public CWnd
{
public:
CView() {
}
~CView() {
}
};
MFC.cpp文件
[C++] 纯文本查看 复制代码 #include "mfc.h"
BOOL CWnd::Create()
{
cout << "CWnd::Create \n";
return TRUE;
}
BOOL CWnd::CreateEx()
{
cout << "CWnd::CreateEx \n";
PreCreateWindow();
return TRUE;
}
BOOL CWnd::PreCreateWindow()
{
cout << "CWnd::PreCreateWindow \n";
return TRUE;
}
BOOL CFrameWnd::Create()
{
cout << "CFrameWnd::Create \n";
CreateEx();
return TRUE;
}
BOOL CFrameWnd::PreCreateWindow()
{
cout << "CFrameWnd::PreCreateWindow \n";
return TRUE;
}
MY.h文件
[C++] 纯文本查看 复制代码
#include <iostream>
#include "mfc.h"
class CMyWinApp : public CWinApp
{
public:
CMyWinApp() {
}
~CMyWinApp() {
}
virtual BOOL InitInstance();
};
class CMyFrameWnd : public CFrameWnd
{
public:
CMyFrameWnd();
~CMyFrameWnd() {
}
};
MY.cpp文件
[C++] 纯文本查看 复制代码 #include "my.h"
CMyWinApp myApp;
CWinApp* AfxGetApp()
{
return myApp.m_pCurrentWinApp;
}
BOOL CMyWinApp::InitInstance()
{
cout << "CMyWinApp::InitInstance \n";
m_pMainWnd = new CMyFrameWnd;
return TRUE;
}
CMyFrameWnd::CMyFrameWnd()
{
cout << "CMyFrameWnd::CMyFrameWnd \n";
Create();
}
void main()
{
CWinApp* pApp = AfxGetApp();
pApp->InitApplication();
pApp->InitInstance();
pApp->Run();
system("pause");
}
二、框架的稳定性:
框架代码提供虚接口以使用户继承父类并改写功能
框架代码提供调用流程
框架代码作为父类,各个父类之间也存在着相互继承,其中的成员函数也存在着相互调用的情况,比如,自身函数调用自身函数,自身函数调用父类函数
框架中的类等着被继承的
三、调用链条:
在末端子类构造CMyFrameWnd中通过调用父类Create()方法层层上调直至到根类,产生调用链条,根类存在虚接口再多态调用回子类改写的虚方法
链条
|