090919(星期六):MFC消息路由4, Frame8代码分析3CWinApp的聚合情况

来源:互联网 发布:淘宝内部优惠卷app 编辑:程序博客网 时间:2024/04/29 08:13

一、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;

       }

pAppCMyWinApp类型,其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聚合CFrameWndCFrameWnd聚合CViewCView聚合CDocument

原创粉丝点击