MFC程序初始化过程

//MFC.h

#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"<<endl;

		return TRUE;

	}

	virtual int Run()

	{

		cout<<"CWinThread::Run"<<endl;

		return 1;

	}

};





class CWnd;//声明



class CWinApp : public CWinThread

{

public:

	CWinApp *m_pCurrentWinApp;

	CWnd *m_pMainWnd;



public:

	CWinApp()

	{

		m_pCurrentWinApp = this;

	}

	~CWinApp()

	{

	}



	virtual BOOL InitApplication()

	{

		cout<<"CWinApp::InitApplication"<<endl;

		return TRUE;

	}



	virtual BOOL InitInstance()

	{

		cout<<"CWinApp::InitInstance"<<endl;

		return TRUE;

	}



	virtual int Run()

	{

		cout<<"CWinApp::Run"<<endl;

		return CWinThread::Run();

	}

};





class CDocument : public CCmdTarget

{

public:

	CDocumnt(){};

	~CDocument(){};

};



class CWnd : public CCmdTarget

{

public:

	CWnd(){};

	~CWnd(){};



public:

	virtual BOOL Create();

	BOOL CreateEx();

	virtual BOOL PreCreateWindow();

};



class CFrameWnd : public CWnd

{

public:

	CFrameWnd(){};

	~CFrameWnd(){};



public:

	virtual BOOL Create();

	virtual BOOL PreCreateWindow();

};



class CView : public CWnd

{

public:

	CView(){};

	~CView(){};

};



//global function

CWinApp* AfxGetApp();







//MY.h

#include "MFC.h"

#include <iostream>

using namespace std;



class CMyWinApp : public CWinApp

{

public:

	CMyWinApp(){};

	~CMyWinApp(){};



public:

	virtual BOOL InitInstance();

};





class CMyFrameWnd : public CFrameWnd

{

public:

	CMyFrameWnd();

	~CMyFrameWnd(){};

};





//MFC.cpp

#include "MY.h"



extern CMyWinApp theApp;//extern global object



BOOL CWnd::Create()

{

	cout<<"CWnd::Create"<<endl;

	return TRUE;

}





BOOL CWnd::CreateEx()

{

	cout<<"CWnd::CreateEx"<<endl;

	PreCreateWindow();

	return TRUE;

}





BOOL CWnd::PreCreateWindow()

{

	cout<<"CWnd::PreCreateWindow"<<endl;

	return TRUE;

}



BOOL CFrameWnd::Create()

{

	cout<<"CFrameWnd::Create"<<endl;

	CreateEx();

	return TRUE;

}





BOOL CFrameWnd::PreCreateWindow()

{

	cout<<"CFrameWnd::PreCreateWnd"<<endl;

	return TRUE;

}





CWinApp* AfxGetApp()

{

	return theApp.m_pCurrentWinApp;

}







//MY.cpp

#include "MY.h"



CMyWinApp theApp;//global object



BOOL CMyWinApp::InitInstance()

{

	cout<<"CMyWinApp::InitInstance"<<endl;

	this->m_pMainWnd = new CMyFrameWnd;

	return TRUE;

}





CMyFrameWnd::CMyFrameWnd()

{

	cout<<"CMyFrameWnd::CMyFrameWnd"<<endl;

	Create();

}





void main()

{

	CWinApp* pApp = AfxGetApp();



	pApp->InitApplication();

	pApp->InitInstance();

	pApp->Run();

}

你可能感兴趣的:(mfc)