MFC类层次结构 //------------------------------------------------------------------ // MFC.H //------------------------------------------------------------------ #include <iostream> using namespace std; class CObject { public: CObject::CObject() {cout<<"CObject Constructor"<< endl;} CObject::~CObject() {cout<<"CObject Destructor"<< endl;} }; class CCmdTarget : public CObject { public: CCmdTarget::CCmdTarget() {cout<<"CCmdTarget Constructor"<< endl;} CCmdTarget::~CCmdTarget() {cout<<"CCmdTarget Destructor"<< endl;} }; class CWinThread : public CCmdTarget { public: CWinThread::CWinThread() {cout<<"CWinThread Constructor"<< endl;} CWinThread::~CWinThread() {cout<<"CWinThread Destructor"<< endl;} }; class CWinApp : public CWinThread { public: CWinApp::CWinApp() { m_pCurrentWinApp = this; cout<<"CWinApp Constructor"<< endl;} CWinApp::~CWinApp() {cout<<"CWinApp Destructor"<< endl;} public: CWinApp* m_pCurrentWinApp; }; class CDocument : public CCmdTarget { public: CDocument::CDocument() {cout<<"CDocument Constructor"<< endl;} CDocument::~CDocument() {cout<<"CDocument Destructor"<< endl;} }; class CWnd : public CCmdTarget { public: CWnd::CWnd() {cout<<"CWnd Constructor"<< endl;} CWnd::~CWnd() {cout<<"CWnd Destructor"<< endl;} }; class CFrameWnd : public CWnd { public: CFrameWnd::CFrameWnd() {cout<<"CFrameWnd Constructor"<< endl;} CFrameWnd::~CFrameWnd() {cout<<"CFrameWnd Destructor"<< endl;} }; class CView : public CWnd { public: CView::CView() {cout<<"CView Constructor"<< endl;} CView::~CView() {cout<<"CView Destructor"<< endl;} }; // global function CWinApp* AfxGetApp(); //------------------------------------------------------------------ // MY.H //------------------------------------------------------------------ #include <iostream> #include "MFC.h" class CMyWinApp : public CWinApp { public: CMyWinApp::CMyWinApp() { cout<<"CMyWinApp Constructor"<< endl;} CMyWinApp::~CMyWinApp() {cout<<"CMyWinApp Destructor"<< endl;} }; class CMyFrameWnd : public CFrameWnd { public: CMyFrameWnd::CMyFrameWnd() {cout<<"CMyFrameWnd Constructor"<< endl;} CMyFrameWnd::~CMyFrameWnd() {cout<<"CMyFrameWnd Destructor"<< endl;} }; //------------------------------------------------------------------ // MFC.CPP //------------------------------------------------------------------ #include "MY.h" extern CMyWinApp theApp; CWinApp* AfxGetApp() { return theApp.m_pCurrentWinApp; } //------------------------------------------------------------------ // MY.CPP //------------------------------------------------------------------ #include "MY.h" CMyWinApp theApp; // global object void main() { CWinApp* pApp = AfxGetApp(); }