⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mfc.cpp

📁 MFC的框架
💻 CPP
字号:
#include "my.h"	//原该嵌入mfc.h就好,但为了CMyWinApp的定义,所以....

extern CMyWinApp theApp;	//external global object

BOOL CWnd::Create()
{
	cout << "CWnd::Create \n";
	return TRUE;
}

BOOL CWnd::CreateEx()
{
	cout << "CWnd::CreateEx \n";
	PreCreateWindow();	//这是一个虚函数,CWnd中有定义,CFrameWnd也改写了它。根据调用对象决定
	return TRUE;
}

BOOL CWnd::PreCreateWindow()
{
	cout << "CWnd::PreCreateWindow \n";
	return TRUE;
}

BOOL CFrameWnd::Create()
{
	cout << "CFrameWnd::Create \n";
	CreateEx();//CreateEx是虚函数,但CMyFrameWnd未改写它,所以引发CFrameWnd::CreateEx
	return TRUE;
}

BOOL CFrameWnd::PreCreateWindow()
{
	cout << "CFrameWnd::PreCreateWindow \n";
	return TRUE;
}

CWinApp *AfxGetApp()
{
	return theApp.m_pCurrentWinApp;
}

AFX_MSGMAP* CCmdTarget::GetMessageMap() const  // JJHOU: in MFC 40 cmdtarg.cpp
{
        return &CCmdTarget::messageMap;
}

AFX_MSGMAP CCmdTarget::messageMap =   // JJHOU: in MFC 40 cmdtarg.cpp
{
        NULL,
        &CCmdTarget::_messageEntries[0]
};

AFX_MSGMAP_ENTRY CCmdTarget::_messageEntries[] = // JJHOU: in in MFC 40 cmdtarg.cpp
{
     // { 0, 0, 0, 0, AfxSig_end, 0 }     // nothing here
        { 0, 0, CCmdTargetid, 0, AfxSig_end, 0 }

};

BEGIN_MESSAGE_MAP(CWnd, CCmdTarget)	//将CCmdTarget的消息网作为CWnd的基网
//等同于
//struct AFX_MSGMAP
//{
//	AFX_MSGMAP *pBaseMessageMap;
//	AFX_MSGMAP_ENTRY *lpEntries;
//};
//AFX_MSGMAP* CWnd::GetMessageMap() const \
//        { return &CWnd::messageMap; } \
//AFX_MSGMAP CWnd::messageMap = \
//{ &(CCmdTarget::messageMap), \
//        (AFX_MSGMAP_ENTRY*) &(CWnd::_messageEntries) }; \
//AFX_MSGMAP_ENTRY CWnd::_messageEntries[] = \
//{
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
//};
ON_COMMAND(CWndid, 0)		//将要加入的消息
//等同于
//{ WM_COMMAND, CN_COMMAND, (WORD)CWndid, (WORD)CWndid, AfxSigCmd_v, \
//	static_cast<AFX_PMSG> (0) },
END_MESSAGE_MAP()
//等同于
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 }

////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CFrameWnd, CWnd)	////将CWnd的消息网作为CFrameWnd的基网
//等同于
//struct AFX_MSGMAP
//{
//	AFX_MSGMAP *pBaseMessageMap;
//	AFX_MSGMAP_ENTRY *lpEntries;
//};
//AFX_MSGMAP* CFrameWnd::GetMessageMap() const \
//        { return &CFrameWnd::messageMap; } \
//AFX_MSGMAP CFrameWnd::messageMap = \
//{ &(CWnd::messageMap), \
//        (AFX_MSGMAP_ENTRY*) &(CFrameWnd::_messageEntries) }; \
//AFX_MSGMAP_ENTRY CFrameWnd::_messageEntries[] = \
//{
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
//};
ON_COMMAND(CFrameWndid, 0)
//等同于
//{ WM_COMMAND, CN_COMMAND, (WORD)CFrameWndid, (WORD)CFrameWndid, AfxSigCmd_v, \
//	static_cast<AFX_PMSG> (0) },
END_MESSAGE_MAP()
//等同于
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 }

////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CDocument, CCmdTarget)	//将CCmdTarget的消息网作为CDocument的基网
//等同于
//struct AFX_MSGMAP
//{
//	AFX_MSGMAP *pBaseMessageMap;
//	AFX_MSGMAP_ENTRY *lpEntries;
//};
//AFX_MSGMAP* CDocument::GetMessageMap() const \
//        { return &CDocument::messageMap; } \
//AFX_MSGMAP CDocument::messageMap = \
//{ &(CCmdTarget::messageMap), \
//        (AFX_MSGMAP_ENTRY*) &(CDocument::_messageEntries) }; \
//AFX_MSGMAP_ENTRY CDocument::_messageEntries[] = \
//{
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
//};
ON_COMMAND(CDocumentid, 0)
//等同于
//{ WM_COMMAND, CN_COMMAND, (WORD)CDocumentid, (WORD)CDocumentid, AfxSigCmd_v, \
//	static_cast<AFX_PMSG> (0) },
END_MESSAGE_MAP()
//等同于
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 }

///////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CView, CWnd)	//将CWnd的消息网作为CView的基网
//等同于
//struct AFX_MSGMAP
//{
//	AFX_MSGMAP *pBaseMessageMap;
//	AFX_MSGMAP_ENTRY *lpEntries;
//};
//AFX_MSGMAP* CView::GetMessageMap() const \
//        { return &CView::messageMap; } \
//AFX_MSGMAP CView::messageMap = \
//{ &(CWnd::messageMap), \
//        (AFX_MSGMAP_ENTRY*) &(CView::_messageEntries) }; \
//AFX_MSGMAP_ENTRY CView::_messageEntries[] = \
//{
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
//};
ON_COMMAND(CViewid, 0)
//等同于
//{ WM_COMMAND, CN_COMMAND, (WORD)CViewid, (WORD)CViewid, AfxSigCmd_v, \
//	static_cast<AFX_PMSG> (0) },
END_MESSAGE_MAP()
//等同于
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 }

////////////////////////////////////////////////////////
BEGIN_MESSAGE_MAP(CWinApp, CCmdTarget)	//将CCmdTarget的消息网作为CWinApp的基网
//等同于
//struct AFX_MSGMAP
//{
//	AFX_MSGMAP *pBaseMessageMap;
//	AFX_MSGMAP_ENTRY *lpEntries;
//};
//AFX_MSGMAP* CWinApp::GetMessageMap() const \
//        { return &CWinApp::messageMap; } \
//AFX_MSGMAP CWinApp::messageMap = \
//{ &(CCmdTarget::messageMap), \
//        (AFX_MSGMAP_ENTRY*) &(CWinApp::_messageEntries) }; \
//AFX_MSGMAP_ENTRY CWinApp::_messageEntries[] = \
//{
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 } \
//};
ON_COMMAND(CWinAppid, 0)
//等同于
//{ WM_COMMAND, CN_COMMAND, (WORD)CWinAppid, (WORD)CWinAppid, AfxSigCmd_v, \
//	static_cast<AFX_PMSG> (0) },
END_MESSAGE_MAP()
//等同于
//#define END_MESSAGE_MAP() \
//        { 0, 0, 0, 0, AfxSig_end, (AFX_PMSG)0 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -