///MFC.h
#ifndef INCLUDE_MFC
#define INCLUDE_MFC
#ifndef INCLUDE_IOSTREAM
#define INCLUDE_IOSTREAM
#include <iostream>
using namespace std;
#endif // INCLUDE_IOSTREAM
class CObject
{
public:
CObject(){cout<<"CObject Constructor \n";}
~CObject(){cout<<"CObject Destructor \n";}
};
class CCmdTarget :public CObject
{
public:
CCmdTarget(){cout<<"CCmdTarget Constructor \n";}
~CCmdTarget(){cout<<"CCmdTarget Destructor \n";}
};
class CWinThread :public CCmdTarget
{
public:
CWinThread(){cout<<"CWinThread Constructor \n";}
~CWinThread(){cout<<"CWinThread Destructor \n";}
};
class CWinApp: public CWinThread
{
public:
CWinApp* m_pCurrentWinApp;
public:
CWinApp()
{
m_pCurrentWinApp = this;
cout<<"CWinApp Constructor\n";
}
~CWinApp(){cout<<"CWinApp Destructor\n"; }
};
class CDocument: public CCmdTarget
{
public:
CDocument(){cout<<"CDocument Constructor \n";}
~CDocument(){cout<<"CDocument Destructor \n";}
};
class CWnd:public CCmdTarget
{
public:
CWnd(){cout<<"CWnd Constructor \n";}
~CWnd(){cout<<"CWnd Destructor \n";}
};
class CFrameWnd : public CWnd
{
public:
CFrameWnd(){cout<<"CFrameWnd Constructor \n";}
~CFrameWnd(){cout<<"CFrameWnd Destructor \n";}
};
class CView : public CWnd
{
public:
CView(){cout<<"CView Constructor \n";}
~CView(){cout<<"CView Destructor \n";}
};
//global function
CWinApp * AfxGetApp();
#endif // INCLUDE_MFC
///MFC.cpp
#include "MFC.h"
#include "MY.h"
extern CMyWinApp theApp;
CWinApp * AfxGetApp()
{
return theApp.m_pCurrentWinApp;
}
///MY.h
#ifndef INCLUDE_MY
#define INCLUDE_MY
#ifndef INCLUDE_MFC
#define INCLUDE_MFC
#include "MFC.h"
#endif // INCLUDE_MFC
class CMyWinApp :
public CWinApp
{
public:
CMyWinApp(void){cout<<"CMyWinApp Constructor \n";}
~CMyWinApp(void){cout<<"CMyWinApp Destructor \n";}
};
class CMyFrameWnd :
public CFrameWnd
{
public:
CMyFrameWnd(void){cout<<"CMyFrameWnd Constructor \n";}
~CMyFrameWnd(void){cout<<"CMyFrameWnd Destructor \n";}
};
#endif // INCLUDE_MY
///MY.cpp
#include "MFC.h"
#include "MY.h"
#include <iostream>
using namespace std;
CMyWinApp theApp;
int main()
{
cout<<"调用主函数"<<endl;
CWinApp * pApp = AfxGetApp();
return 0;
}
Execute: