友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

深入浅出MFC第2版(PDF格式)-第60章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






    return FALSE; 

 } 



 于是得到这个结果: 



CDocument::OnCmdMsg() 

CCmdTarget::OnCmdMsg() 

 131    CMyDoc 

 13    CDocument 

 1    CCmdTarget 



                                                                                   197 


…………………………………………………………Page 260……………………………………………………………

                 第篇  勿在浮砂築高台 



                  如果在映射表中还是没找到对应消息,二万五千里长征还是未能结束,这时候退守回到 



                  CFrameWnd::OnCmdMsg  , 调用 CWnd::OnCmdMsg   (也就是 



                  CCmdTarget::OnCmdMsg ),得到这个结果: 



                 CCmdTarget::OnCmdMsg() 

                 1211    CMyFrameWnd 

                 121    CFrameWnd 

                 12    CWnd 

                 1    CCmdTarget 



                  如果在映射表中还是没找到对应消息,二万五千里长征还是未能结束,再退回到 



                  CFrameWnd::OnCmdMsg  , 调用   CWinApp::OnCmdMsg  (亦即 

                                            



                  CCmdTarget::OnCmdMsg ),得到这个结果: 



                 1111    CMyWinApp 

                 111    CWinApp 

                 1    CCmdTarget 



                  万一还是没找到对应的消息, 二万五千里长征可也穷途末路了, 退回到 



                  CWnd::WindowProc,调用CWnd::DefWindowProc 。你可以想象,在真正的MFC  中 



                  这个成员函数必是调用Windows API  函数::DefWindowProc 。为了简化,我让它在 



                  Frame8  中是个空函数。 



                  故事结束! 



                  我以图3…7 表示这二万五千里长征的调用次序(call stack ),图3…8 表示这二万五千里 



                  长征的消息流动路线。 



198 


…………………………………………………………Page 261……………………………………………………………

                                                                 第3章    MFC 六大關鍵技術之模擬 



                                                                          CObject 

    AfxWndProc                                                             CObject 

     AfxWndProc 

                                                                             CCmdTarget 

                                                                               CCmdTarget 



                                                                                 CWinThread 

    AfxCallWndProc                                                                CWinThread 

     AfxCallWndProc 

                                                                                     CWinApp 

                                                                                      CWinApp 



                                                                                         CMyWinApp 

                                                                                          CMyWinApp              

     CWnd::WindowProc 

     CWnd::WindowProc                                                            CWnd 

                                                                                  CWnd 



                                                                                     CView 

                                                                                      CView 



         WM_MAND             CFrameWnd::Onmand                                     CMyView 

                                 CFrameWnd::Onmand                                     CMyView               



                                                                                     CFrameWnd 

                                                                                      CFrameWnd 



        general                 CWnd::Onmand                                          CMyFrameWnd 

                                 CWnd::Onmand                                          CMyFrameWnd            

        Windows  

                                                                                 CDocument 

        message                                                                   CDocument 

        (WM_xxx) 

                                                                                     CMyDoc 

                                        CFrameWnd::OnCmdMsg                           CMyDoc                     



                                  or         CView::OnCmdMsg 

AFX_MSGMAP* pMessageMap =                    CWnd::OnCmdMsg  ………》 CCmdTarget::OnCmdMsg                 

 AFX_MSGMAP* pMessageMap =  

                       GetMessageMap();      CWinApp::OnCmdMsg ………》 CCmdTarget::OnCmdMsg  

                        GetMessageMap(); 



for(; pMessageMap != NULL;。。。)          CView::OnCmdMsg 

 for(; pMessageMap != NULL;。。。)          CView::OnCmdMsg 

{  。。。  } 

 {  。。。  } 

                                  or         CWnd::OnCmdMsg ………》 CCmdTarget::OnCmdMsg               

                                             CDocument::OnCmdMsg 



                                        CDocument::OnCmdMsg 

                                         CDocument::OnCmdMsg 

                                  or 

                                             CCmdTarget::OnCmdMsg ………》 CCmdTarget::OnCmdMsg  



                                        CCmdTarget::OnCmdMsg(。。。) 

                                         CCmdTarget::OnCmdMsg(。。。) 

                                             // walking the message map。 

                                              // walking the message map。 

                                             AFX_MSGMAP* pMessageMap = GetMessageMap(); 

                                              AFX_MSGMAP* pMessageMap = GetMessageMap(); 

                                             for(; pMessageMap != NULL;。。。)  { 。。。 } 

                                              for(; pMessageMap != NULL;。。。)  { 。。。 } 



  图3…7 当CMyFrameWnd 对象获得一个WM_MAND,所引起的Frame8 



            函数调用次序。 



                                                                                                               199 


…………………………………………………………Page 262……………………………………………………………

                     第篇  勿在浮砂築高台 



                      CObject                                       CObject 

                       CObject                                       CObject 



                          CCmdTarget                                    CCmdTarget 

                           CCmdTarget                                   CCmdTarget 



                              CWinThread                                   CWinThread 

                              CWinThread                                    CWinThread 



                                 CWinApp                                       CWinApp 

                                  CWinApp                                       CWinApp 



                                     CMyWinApp                                    CMyWinApp 

                                     CMyWinApp                                     CMyWinApp 



                              CWnd                                         CWnd 

                              CWnd                                          CWnd 



                                 CView                                         CView 

                                  CView                                         CView 



                                     CMyView                                      CMyView 

                                     CMyView                                      CMyView 



                                 CFrameWnd                                     CFrameWnd 

                                  CFrameWnd                                     CFrameWnd 



                                     CMyFrameWnd                                  CMyFrameWnd 

                                     CMyFrameWnd                                   CMyFrameWnd 



                              CDocument                   
返回目录 上一页 下一页 回到顶部 0 1
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!