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

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

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




                                                           附錄D    以MFC 重建DBWIN  



我的使用經驗 



      現在讓我來談點我使用  Tracewin  的經驗。 



      我早就需要在  Visual  C++  使用  DBWIN  了,也早就看到了  Paul  DiLascia  的兩篇文 



      章,但是真正研讀它並使用其成果,是在我撰寫  /OLE/ActiveX  書(我最新的 



      本書,還在孵化之)的時候。也許當你讀到該書,會感嘆侯俊傑怎麼能夠對OLE container 



      和  server  之間的交叉動作瞭若指掌。洠в惺颤N,我只是在  container  和  server  之的每 



      個我感興趣的函式的開始處,利用  TRACE  輸出些訊息,這樣我就可以從容從 



      Tracewin  視窗觀察那些函式的被呼喚時機了。 



      所以我在  OLE container  這麼做: 



          #include 〃tracewin。h〃 

          。。。 

          BOOL CContainerApp::InitInstance() 

          { 

            。。。 

            pMainFrame…》ShowWindow(m_nCmdShow); 

            pMainFrame…》UpdateWindow(); 



            CMfxTrace::Init(); // add by J。J。Hou 

            return TRUE; 

          } 



      也在  OLE server  這麼做: 



          #include 〃tracewin。h〃 

          。。。 

          BOOL CScribbleApp::InitInstance() 

          { 

            。。。 

            pMainFrame…》ShowWindow(m_nCmdShow); 

            pMainFrame…》UpdateWindow(); 



            CMfxTrace::Init(); 

            return TRUE; 

          } 



      然後我就可以使用  TRACE  巨集並搭配  Tracewin  看個過癮了。 



                                                                                         933 


…………………………………………………………Page 996……………………………………………………………

                   第五篇    附錄  



                   很好,當這兩個程式獨立執行的時候,切盡如意!但是當我在  container  即編輯 



                   Scribble item               Scribble TRACE             Tracewin  

                              ,我發現洠в腥魏巍                      ∽执伙@示在               視窗。這麼 



                   來我就觀察不到  Scribble  的交叉作用了呀!於是我想,莫不是兩個程式爭用  afxDump ? 



                   或是因為兩個  Win32  行程使用不同的位址空間?或是因為。。。 



                   胡說!洠У览硌健H绻医徊媸褂酶髯元毩⒌摹 ontainer  和  Scribble(不牽扯即編輯), 



                   它們的  TRACE  結果會交叉出現在  Tracewin  視窗,這就推翻了述的胡思亂想。 



                   然後我想,會不會是即編輯時根本洠в羞M入   server                           的   InitInstance ?如果 



                   CMfxTrace  Init             TRACE 

                            ::    洠в邢葓绦羞^,              當然就不會輸出到  Tracewin  視窗囉。於是我把 



                   CMfxTrace  Init 

                            ::         。。。 。。。                      server                 server 

                                 改設在 唔 什麼方才是即編輯時                       的第個必經之? 



                   item  是也。於是我這麼做: 



                       CScribbleItem::CScribbleItem(CScribbleDoc* pContainerDoc) 

                              : COleServerItem(pContainerDoc; TRUE) 

                       { 

                              CMfxTrace::Init(); 



                              // TODO: add one…time construction code here 

                              //  (eg; adding additional clipboard formats 

                              //   to the item's data source) 

                       } 



                                             圖八    Tracewin  

                   賓果!我看到了預期的枺鳌! 【褪恰                         ∫暣爱嬅妗_@些輸出結果幫助我分析出 



                   OLE container  和  server  的舉動。 



934 


…………………………………………………………Page 997……………………………………………………………

                                           附錄D    以MFC 重建DBWIN  



      圖八   Tracewin   視窗畫面 



  新的視野 



   好的除錯工具,不應該要求應用程式碼本身做任何配合性的動作。Paul  DiLascia  的 



   Tracewin  小工具是個權宜之計。使用稱不太方便(你得含入個  tracewin。h ), 



   而且你得有某種程度的技術背景才能把它用得好。不過,說真的,我還是很感謝  Paul 



   DiLascia  的創意,讓我們的視野有了新的角度。 



   我想你也是。 



                                                                  935 


…………………………………………………………Page 998……………………………………………………………

                第五篇    附錄  



           重建 DBWIN 之 Debug Event 篇 



                                DBWIN                             DBWIN  

                 自從我開始注意到             之後,我就更加注意期刊有關於                  技巧的文章。這 



                才發現,好像大家滿喜歡在這個睿空宫F自己傲的功力。像  Paul Dilascia  這樣,以 



                        MFC     DBWIN                         …      MFC programming 

                高階的        來寫         ,當然也就不可能太過「威力」 雖然從 



                                              Paul                                 。h 

                的技巧來看,我們是學了不少。你知道,                的方法要求你改變你的原始碼,含入個 



                檔,並在你的  。cpp  檔加兩行。這在使用的方便性不怎麼高明。 



                要高明點,不落痕跡抓到  TRACE  輸出,就必須懂得  Windows  作業系統內部,以 



                     Windows   system   programming              Matt   Pietrek  

                及                          。是的,這方面的大師                     也寫了個 



                DBWIN                                debug event 

                       ,不必影響你的原始碼。不過,他用到                     ,以及許多系統知識,不應該 



                是本  MFC  書籍適合涵蓋的主睿K裕抑荒茉谶@裡告訴你,可以到  Microsoft 



                Systems  Journal  1995。07  的  Windows  Q/A  專欄學習。程式名稱為  LODPRF32  。此程 



                式的主要功能其實是讓你觀察目前所有映射到記憶體的  DLLs  。你可以從知道你的 



                EXE                     DLLs                    implicitly loading EXE 

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