友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
富士康小说网 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

深入浅出MFC第2版(PDF格式)-第110部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!



                   #0063          for (j = 1; j 《 (MAXROW…1); j++) { 

                   #0064              m_OcxGrid。SetRow(j); 

                   #0065              m_dArray'i''j' = atof(m_OcxGrid。GetText()); 

                   #0066          } 

                   #0067      } 

                   #0068      CDialog::OnOK(); 

                   #0069  } 

                   #0070 

                   #0071  void CGridDlg::OnUpdatevalue() 

                   #0072  { 

                   #0073      CString str; 

                   #0074      double value; 

                   #0075      // LONG   lRow; lCol; 

                   #0076      int   Row; Col; 

                   #0077 

                   #0078      if (m_OcxGrid。GetCellSelected() == 0) { 

                   #0079        AfxMessageBox(〃No cell selected〃); 

                   #0080        return; 

                   #0081      } 

                   #0082 

                   #0083      UpdateData(TRUE); 

                   #0084      value = atof(m_cellValue); 

                   #0085      str。Format(〃%8。2f〃; value); 

                   #0086 

                   #0087      // saves current cell selection 

                   #0088      Col = m_OcxGrid。GetCol(); 

                   #0089      Row = m_OcxGrid。GetRow(); 

                   #0090 

                   #0091      m_OcxGrid。SetText(str); // copies new value to 

                   #0092                              //  the selected cell 

                   #0093      puteSums(); 

                   #0094 

                   #0095      // restores current cell selection 

                   #0096      m_OcxGrid。SetCol(Col); 

                   #0097      m_OcxGrid。SetRow(Row); 



840 


…………………………………………………………Page 903……………………………………………………………

                             16                           ponents & ActiveX Controls 

                          第 章 站眾的肩膀 使用 



#0098  } 

#0099 

#0100  void CGridDlg::OnSelChangeGrid() 

#0101  { 

#0102      if (m_OcxGrid) { 

#0103          m_cellValue = m_OcxGrid。GetText(); 

#0104          UpdateData(FALSE); // calls DoDataExchange to update edit 

control 

#0105          GotoDlgCtrl(GetDlgItem(IDC_VALUE)); // position edit control 

#0106      } 

#0107  } 

#0108 

#0109  void CGridDlg::puteSums() 

#0110  { 

#0111      int    i; j; nRows; nCols; 

#0112      double sum; 

#0113      CString str; 

#0114 

#0115      // adds up each row and puts the sum in the right col 

#0116      // col count could have been changed by add row/delete row 

#0117      nCols = (int) m_OcxGrid。GetCols(); 

#0118      for (j = 1; j 《 (MAXROW…1); j++) { 

#0119          m_OcxGrid。SetRow(j); 

#0120          sum = 0。0; 

#0121          for (i = 1; i 《 nCols 1; i++) { 

#0122              m_OcxGrid。SetCol(i); 

#0123              sum += atof(m_OcxGrid。GetText()); 

#0124          } 

#0125          str。Format(〃%8。2f〃; sum); 

#0126          m_OcxGrid。SetCol(nCols 1); 

#0127          m_OcxGrid。SetText(str); 

#0128      } 

#0129 

#0130      // adds up each column and puts the sum in the bottom row 

#0131      // row count could have been changed by add row/delete row 

#0132      nRows = (int) m_OcxGrid。GetRows(); 

#0133      for (i = 1; i 《 MAXCOL; i++) { 

#0134          m_OcxGrid。SetCol(i); 

#0135          sum = 0。0; 

#0136          for (j = 1; j 《 nRows 1; j++) { 

#0137              m_OcxGrid。SetRow(j); 

#0138              sum += atof(m_OcxGrid。GetText()); 

#0139          } 

#0140          str。Format(〃%8。2f〃; sum); 

#0141          m_OcxGrid。SetRow(nRows 1); 

#0142          m_OcxGrid。SetText(str); 



                                                                                                841 


…………………………………………………………Page 904……………………………………………………………

                   第篇    深入  MFC  程式設計 



                   #0143      } 

                   #0144  } 



                   下图是  OcxTest  的执行画面。 



 842 


…………………………………………………………Page 905……………………………………………………………

                                        5 



               附錄 



深入湷觥FC 

                2nd Edition 



                                             843 


…………………………………………………………Page 906……………………………………………………………

                            

                  第五篇 附錄  



  844 


…………………………………………………………Page 907……………………………………………………………

                                                            

                                                   附錄A 無責任書評 



         

附錄A 無責任書評 



                   從搖籃到墳墓      

                                                     

            Windows 的完全學習 



                                               侯捷             整理 

                                                     /  1996。08。12  



侯俊傑先生邀請我為他嘔心瀝血的新作 深入湷錾钊霚出 MFC  寫點枺鳌N椅磳懳恼戮靡樱

                                深入湷錾钊霚出    



但是你知道,要拒絕個和你住在同個大腦同個埽鼩さ娜杖找挂沟┑┫οΦ恼垺



求,是很困難的  …。不,簡直是不可能。於是,我只好重作馮婦! 



事實也不全然是因為躲不過日日夜夜的轟炸,部份原因是,當初我還在雜誌主持 



無責任書評時,就有讀者來信希望書評偶而變換口味,其個建議就是談談如何養成 



Windows  程式設計的全面性技術。說到全面性,那又是個impossible mission  !真的, 



Windows  程式技術的領域實在是太廣了,我們從來不會說撸蜍涹w設計、多媒體程式設 



計、通訊軟體設計 是屬於              程式技術的範疇,但,它們通常都被理所當然歸類 

              。。。      DOS  



屬於Windows  程式設計領域。為什麼?因為幾乎所有的睿慷及莸乖凇indows  作業系 



統的大傘之,幾乎每種技術都被涵蓋在千百計(並且以驚速度繼續增加)的 



Windows API  之。 



我的才智實不足以涵蓋這麼大面積的學問,更遑論從精挑細選經典之作介紹給你。那 



麼,本文睿看筘葚莸摹竿耆珜W習」又怎麼說?呃,我指的是Windows  作業系統的核心 



觀念以及程式設計的本伲鼘W能這路,至於撸颉⒍嗝襟w、通訊、Web Server 、資料庫、 



統統被我歸類為「應用」領域。而                    、      、  雖也都可以開發 

                          Visual Basic Delphi Java         Windows 



程式,卻又被我屏棄在  C/C++  的主流之外。 



                                                                       845 


…………………………………………………………Page 908……………………………………………………………

               第五篇    附錄  



                以謹就我的視野,分門別類把我心目認為必備的相關好書介紹出來。你很容易就 



                可以從我所列出的書名看出我的湵。涸谧鳂I系統方面,我只涉獵  Windows  3。1  和 



                         (            是我的波焦點),在                         方面, 

               Windows 95 Windows NT 4。0                   Application Framework  



                我只涉獵       (     和     是我的個獵物)。 

                        MFC OWL     Java  



          Windows 作業系統 



                 Windows Internals / Matt Pietrek / Addison Wesley 



                最能夠反應作業系統奧秘的,就是作業系統內部資料結構以及API 的內部動作了。本書 



                藉著對這兩部份所做的逆向工程,剖析  Windows  的核心。 



                個設計良好的應用程式介面(  )應該是個不必讓程式員擔心的黑盒子。本書的主 

                                       API 



                要立意並不在為了對  API  咦髟淼挠懻摱@得更多程式寫作方面的利益(雖然那其實 



                是個必然的額外收穫),而是藉由             虛擬碼,揭露出            作業系統的咦髟怼!

                                         API             Windows  



                時光漸漸過去,程式員漸漸成長,我們開始對  How  感到不足而想知道  Why  了,這就 



                是本書要給我們的枺鳌!



                本書不談  Windows  官方手冊已有的資訊,它談「新資訊」。如何才能獲得手冊洠А



                有記載的資訊?呵,原始碼說明切。看原始碼當然是不錯,問睿恰 indows  的原始 



               碼刻正鎖在美國                 (微軟公司總部所在)的保險庫裡,搞不好就在比爾 

                             WA;  Redmond                                     。 



                蓋茲的桌。我們唯能夠取得的  Windows  原始碼大概只是  SDK  磁片的  defwnd。c 



                和       (這是DefWindowProc 和 DefDlgProc 的原始碼),以及         磁片的 

                   defdlg。c                                         DDK  



                大堆驅動程式原始碼。那麼作者如何獲得比你我更多的秘密呢? 



                Matt  Pietrek  是軟體反組譯逆向工程的個翹楚。本書藉由個他自己開發的反組譯工 



                具,把獲得的結果再以  C  虛擬碼表現出來。我們在書看到許許多多的  Windows  API 



                虛擬碼都是這麼來的。            還有個很有名的產品叫做                     ,和 

                                 Pietrek                     BoundsChecker   SOFT



                     (功能強大的                 ,以企鵝為形象)搭配銷售。 

                ICE/W          Windows Debugger 



                本書主要探討  Windows  3。1  386  加強模式,必要時也會提及標準模式以及  Windows 



846 


…………………………………………………………Page 909……………………………………………………………

                                                                   

                                                          附錄A 無責任書評 



   。書並洠в泻w虛擬驅動程式、虛擬機器、網路  、多媒體、                               、 

3。0                                         API       DDE/OLE  dialog/control 



等主睿羌凇 indows  啟動程序、記憶體管理系統、視窗管理系統、訊息管理 



系統、排程管理系統、繪圖系統身。本書對讀者有大要求  : 



 對             的保護模式定址方式、                       、        已有基本認識。 

       Intel CPU                     segmentation selector  



   擁有  Windows SDK  手冊。 



 對作業系統有基礎觀念,例如什麼是多工,什麼是虛擬記憶體 等等。 

                                                            。。。 



作者常借用物件導向的觀念解釋                      ,如果你懂          語言,知道類別與物件,知 

                             Windows           C++  



道成員函式和成員變數的意義與其精神,對他的比喻當能心領神會。 



對系統感興趣的,本書定讓你如魚得水。你唯可能的抱怨就是:大堆  API  函式 



的虛擬碼令心煩氣燥。文字瀚海圖片沙漠的情形也再考驗讀者的定力與耐力。然而 



小瑕不掩大瑜。我向來認為釀了瓶好酒的不必聲嘶力竭廣告它,這本書就是瓶 



好酒。作者            自         起已登 Microsoft  Systems  Journal 的 

            Pietrek    1993/10                                 Windows  Q&A 



主持寶座,洠砂阉⒆拥倪@位子可是如坐針氈。現在他又主持同本刊物的另 



個專欄:                 。Dr。 Dobb's Journal  的Undocumented Corner 專欄也時有Pietrek 

       Under The Hood 



的蹤影。 



 Undocumented Windows  /  Andrew  Schulman;  David  Maxey; 



   Matt Pietrek / Addison Wesley 



朋友們在書店裡選書的方式如何?看不看序?看不看前言?別抓起書像數鈔票般頁頁 



流樱В䶮o目的的跳躍。從序可以看出作者的創作心路歷程,作者的抱負理想,還可 



以看出作者的文筆斤兩。書序,好看得很呢。 



大抵你可以從外文書的  Preface  或  Acknowledge  或  Introduction  或  Foreword  看到些類 



似「序」這樣的輕鬆小品。本書   Windows Internals  的作者在其  Introduction  部份, 



提到他的感謝,其對於該書編輯有這麼段感性談話 : 

                                                 



                                                                                847 


…………………………………………………………Page 910……………………………………………………………

                 第五篇    附錄  



                 首先我要謝謝的,當然是我的編輯。洠в兴@本書幾乎不可能完成。當我們開始為這本 



                 書築夢時,它看起來是那麼可怖,令畏縮。只因為我知道他可以助我臂之力我才有勇 



                 氣進行去。幾乎我所寫的每筆資料他都有令驚訝的豐富知識,而且他也注意不讓太 



                 多細節扼殺了想像空間。每次當我認為我已經鉅細靡遺涵蓋了整章細部討論,他會以 



                 數百個毫不誇張的意見把我推回原點,促使我完成更詳細的討論。我不能夠想像是否還有 



                 更好的編輯如他了。 



                 備受  Matt Pietrek  推崇的這位編輯,正是稱  ! §Mr。 Undocumented!  ¨ 的知名作家  Andrew 



                         ,也正是我現在要介紹的Undocumented Windows  書作者。 

                 Schulman                     



                 任何看到這本書,再看到作者名字,恐怕都有這樣的疑惑:此書和 Windows Internals                   有 

                                                                                      



                 何區別又有何關係?                提出了本書的目標設定:Windows  Internals        探討的是 

                                  Schulman                                      



                             的內部工作情況,這些            都是公開的,正式的;Undocumented Windows 

                 Windows APIs                   APIs                             



                 探討的則是洠в谐霈F在  Windows  正式文件的資料。 



                 想學點絕招現買現賣立刻用到自己軟體的可能會失望。搞清楚,本書名叫 



                 Undocumented Windows  而不是 Undocumented WindowsAPI 。雖然它對     個以的未 

                                                                           250  



                 公開函式都有描述,然而有半以的篇幅是在介紹如何以各種工具窺視  Windows  系 



                 統,幫助我們了解什麼是               、什麼是       、什麼是          ,這者是           模 

                                      Module        Task       Instance      KERNEL  



                 組最重要的成份。當然它也對  GDI  模組和  USER  模組開膛剖腹番。書裡附了許多 



                 軟體工具對  Windows  的偵測報告。這些程式有的是  Phar Lap  公司的正式出品,有的是 



                 Schulman  的私貨。Phar  Lap  公司做這類工具軟體真是輕而易舉,別忘記了他們是  DOS 



                 Extender  的著名廠商。 



                 本書第章漫談許多主睿讼喈數钠懻摗 indows  未公開祕密所引發的美國聯 



                 邦交易委員會(U。S。  FTC )的關切。第章至第章分別介紹些工具。第五章到第八 



                 章是本書第個重點,介紹                  (其實就是            、  、       大模組)的 

                                         Windows         KERNEL  GDI  USER  



                 各個未公開結構、訊息、函式。很多資料不曾在  SDK  公佈,卻出現在DDK  ,想深入 



                 了解  Windows  的不妨有空注意  DDK  的文件。這章佔據412  頁。 



848 


…………………………………………………………Page 911……………………………………………………………

                                                        

                                                附錄A 無責任書評 



第十章介紹的  ToolHelp  是本書第個重點。ToolHelp  是  Windows 3。1  新添的個動態 



聯結函式庫,可以滿足程式對  Windows   內部資料的查詢。本章對  ToolHelp  的每個 



API  用法、參數、結構、訊息都描述十分詳細。這些  API  允許我們取得  Global Heap  、 



        、            、          、以及
返回目录 上一页 下一页 回到顶部 9 10
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!