一、Frame8程序main函数第4-7行
源码:
CMyDoc* pMyDoc = new CMyDoc;
CMyView* pMyView = new CMyView;
CFrameWnd* pMyFrame = (CFrameWnd*)pApp->m_pMainWnd; //此处的m_pMainWnd = new CMyFrameWnd
pMyFrame->m_pViewActive = pMyView;
pMyView->m_pDocument = pMyDoc;
CFrameWnd* pMyFrame = (CFrameWnd*)pApp->m_pMainWnd; //此处的m_pMainWnd
m_pMainWnd在什么地方产生的?
class CWinApp : public CWinThread
{
public:
CWinApp* m_pCurrentWinApp;
CWnd* m_pMainWnd; //Applicaion是个大概念,包含一个CWnd,
public:
CWinApp::CWinApp() {
m_pCurrentWinApp = this;
}
pApp是CMyWinApp类型,其m_pMainWnd变量是在CMyWinApp::InitInstance生成的。
BOOL CMyWinApp::InitInstance()
{
cout << "CMyWinApp::InitInstance /n";
m_pMainWnd = new CMyFrameWnd;
return TRUE;
}
class CFrameWnd : public CWnd
{
public:
CView* m_pViewActive; // current active view
public:
CFrameWnd::CFrameWnd() {
}
CFrameWnd::~CFrameWnd() {
}
class CView : public CWnd
{
public:
CDocument* m_pDocument;
public:
CView::CView() {
}
CView::~CView() {
}
总之的意思是CWinApp聚合CFrameWnd,CFrameWnd聚合CView,CView聚合CDocument