簡介本書適用于已經具備了MFC編程的基礎知識,而又渴望擴充自己的能力和知識的讀者。書中提供了眾多的方法和技術,用于處理文檔-視圖體系結構、打印和預覽、樹形控件和列表控件、控制欄和對話欄、圖形圖像處理和調色板操作、數據庫訪問對象(DAO)類,以及增強型元文件。豐富的Internet類是VisualC十十5.0的新特性,在本書最后一章中,我們將介紹這些新特性并學習如何編寫文件傳輸協(xié)議(FTP,filetransferprotocol)瀏覽器。在所給范例中,有些使用了App和Class向導,有些未用。所有的例子程序都是非常實用的應用程序,而不是小代碼段,它們展示了如何把整個應用程序組合在一起。此外,我們還將討論有效地利用系統(tǒng)注冊表(systemRegistry)的各種方法。讓我們以打印和與之相關的預覽操作為例來看一下MFC的作用。在商業(yè)應用程序中,打印報表通常是應用程序中最重要的功能。在很多這類應用程序中,用戶界面和程序操作僅僅是為打印作準備。無論是基于文字、基于圖形,還是二者的結合,只要報表對你的應用程序而言是重要的,本書都可以助你一臂之力。本書將通過6個重要的范例演示如何處理打印/預覽操作,它們分別適用于從文字到圖形的每一種不同的應用。本書主要講述MFC的中級技巧,例如如何用CListCtrl和字體枚舉來創(chuàng)建字體選擇控件,如何使用CTreeCtrl和ABC字符寬度,以及單詞的換行技術。書中還深入地講述了映射模式,列舉了很多文本和圖形縮放的例子,也瀏覽了CPtrArray和CObjList容器類。前七章主要講述各種文檔-視圖(Document-View)結構的實現,并演示了序列化的方法。圖形操作包括用世界坐標系來縮放、裁剪以及滾動位圖(bmp)文件。另外,還深入討論了顏色調色板,內容包括Identitypalettes,如何轉換為灰度圖像或者如何完成顏色調整。也涉及了WYSI-WYG操作。第8章和第9章利用新的DAO類來更新和查詢MicrosoftAccess數據庫,生成了精美的報表,并為樹形控件和列表控件提供數據。第10章專門講述了控制欄、對話欄和工具箱。在一個DAO例子中甚至還有動態(tài)分配二維數組的操作。第12章對增強型元文件做了一個綜合考察。最后一章演示了用新的Internet類寫一個FTP瀏覽器的方法。各章中的提示講述的是如何有效地使用系統(tǒng)注冊表(SystemRegistry),代替原來的位于Windows文件夾中的舊風格ini文件。如果讀者不是MFC的中級程序員,但對WIN32風格的編程非常熟悉,那么本書也是一個學習MFC類方法的很有價值的工具,因為書中經?;仡櫼恍┲饕暮瘮岛头椒?,這些函數和方法將會非常有用。在剛開始的幾章中,作者總是給出基本的C語言風格函數和與之對應的MFC的類和方法,這是因為MFC編程者總要借助WIN32編碼。當使用增強型元文件的時候,這種情況就非常明顯了。不要因為學習的是一些小的例子程序就感到煩惱。所有的中級MFC應用程序都可以在Windows95和WindowsNT平臺運行。如果你在Windows3.1平臺作開發(fā)工作,那么絕大多數概念仍然適用,只是讀者需要對代碼作一些改動,二者最大的差異在內存模式和體系結構方面。雖然書中簡要介紹了C語言風格打印機的Escape打印代碼,但是在打印方面主要的重點工作仍然是由MFC類封裝起來的代碼完成。作者使用了所有的標準的Print,PrintSet-up,PrintPreview和PageSetup對話框,還分別討論了文檔-視圖(Doc-View)結構的應用程序和非文檔視圖(nonDoc-View)結構的應用程序的打印。演示了用于打印文本和圖形的各種技巧,包括很多用于打印時縮放bmp文件的方法。還涉及了利用從MicrosoftAccess數據庫中獲得數據,來生成可打印的報表的方法。讀者將會從中學到創(chuàng)建、使用、縮放和打印增強型元文件的方法。對于文本來講,字體的問題很突出,所以我們一開始就討論字體的細節(jié),包括ChooseFonts公共對話框和CListCtrl字體枚舉控件,類似在商業(yè)字處理器中用到的那樣。本書甚至也在一定程度上涵蓋了對話框和自動數據傳輸。本書中還有6個以PrintingSituation#n作為開頭的部分。為了便于快速參考。它們分別簡潔地定義在程序例子中用到的打印過程的各個方面。對于編碼風格,有兩點要注意。作者講授編程課程已有16年以上的歷史了就像讀者已經意識到的那樣,Wind0ws編程涉及大量的標識符、關鍵值和API以及類的成員函數。名字空間的復雜程度除了編寫操作系統(tǒng)外,超過了任何一個作者所見過的程序。那些必須的名字和標識符的數量之多,除了讓讀者不知所措外,沒有其他的意義。實際上,我仍然記得在我第一次教Windows編程的學期中,花了很多的時間來試圖解決哪些名字是必須精確編碼的,哪些是可以任意控制的。本書的一個主要特點是,讀者哪些名字是必須照原樣輸入的,比如MFC類的一部分,而哪些名字是可以任意控制的。所有用戶定義的變量名稱一般都是小寫——如果是小寫的話,那么應該可以由讀者自己來命名。只有兩個例外,一個是#define定義的名字,根據一般的編程約定,總是大寫;另一個例外就是類成員函數名稱,字母是大寫的。另一個在示例中識別名字代碼的辦法是:如果名字使用的是匈牙利記法(Hungarian),那么它就是MFC的專用名字;如果不是,那就是程序員自己定義的名字。讀者在自己的代碼中可以用任何一種自己熟悉的命名約定,但是如果你參考本書的命名約定的話,可以免去或基本免去對名字的猜測之苦。當用ClassWizard生成代碼時,類的成員的名字都用m開頭,本書也采用了這種方法。作者對所有的代碼都作了詳細的歸檔處理??梢钥隙ǖ卣f,這些代碼都是可讀的,并且是可維護的。關于版權這里要說一句:書中的例子程序和代碼,讀者可以隨意使用,不需要許可證。但是如果沒有隨意改變我的代碼的話,能夠對我說聲謝謝可能會更好。當然,我對例子程序中的任何不好的影響都不負責——如果使用,就自己負責。我的mail地址是:Broquard@flink.com。請注意,本書是學習者的手冊,不是專用的參考手冊。因此,需要查詢文檔或者是“On—LineBooks”,因為那些編程人員會給你的產品提供參考或者更深入的細節(jié)。軟件要求讀者可以在WindoWs95或者是WindowsNT下,用MicrosoftVisualC十十5.0或者是更高的版本,編譯運行所有的例子程序。在這里,編譯鏈接用的是版本5.0。光盤中的發(fā)行版在建立的時候,用的是靜態(tài)鏈接,這樣就不需要再加載這個版本的MFCDLL。另外,也可以在版本4.2下編譯所有的例子程序(除了最后一章中的Internet例子程序)。在發(fā)行版5.0中有哪些新的東西MFC5.0中新的項目包括Internet類,封裝在WinInetWin32接口中。用這些新的類來訪問網絡是件非常容易的事情。同時也要注意,發(fā)行版本越小,執(zhí)行的速度越快。全部的MFC都已經在速度上做了很大的優(yōu)化。版本5.0也包括對ActiveX控件(OLE2和COM)的大量的新的支持,但是這已經超出了本書討論的范圍。配套光盤上的例子程序本書光盤上面有本書所有的例子程序的完整代碼。由于篇幅的原因,本書中只節(jié)選了相關的部分。附錄C中講述了如何安裝和使用光盤。所有的例子程序都包含可執(zhí)行的版本和源文件以及工程文件。主要的子目錄是IntermediateMFC??蓤?zhí)行程序的發(fā)行版在\Intermedi-ateMFC\Bin文件夾中,這樣讀者不需要在運行這些程序之前編譯這些例子。但是,如果讀者想在運行安裝程序之前,就運行這些程序,還是請先閱讀光盤上的readme文件,文件中將講述如何正確的初始化系統(tǒng)注冊表(SystemRegistry)。每一個例子程序都位于獨立的文件夾中。文件夾的命名約定是PgmNNL,這里NN是章節(jié)號而L是字母,它用來區(qū)分一章中的多個程序。因此,名字為Pgm05b的文件夾包含的是第5章的第二個例子程序。\IntermediateMFC\Bmp文件夾中有一些bmp文件,這些文件在所有的程序中都會用到。一些可以查詢的其他資源下面是一些關鍵的中級或者高級的MFC參考書。Blaszczak,M.《TheRevolutionaryGuidetoMFC4ProgrammingwithVisualC十十》,Chicago,IL:Wrox,1996。這本必備的書有大量的有用信息,特別是關于OLE的部分。ISBN1-874416-92-3Schmitt,D.《ExtendingtheMFCLibrary》,Reading,MA:AddisonWesley,1996。這本書為讀者演示如何編寫自己的MFC擴展類,甚至把它們變成DLL或者是OCX。ISBN0-201-48946-5Shepherd,G.和Wingo,S.《MFCInternals》,Reading,MA:AddisonWesley,1996。這本必備的書涵蓋了MFC的內部設計,給讀者一個更好的機會來繼續(xù)閱讀MFC源碼本身。ISBN0-201-40721-3。Internet站點是免費的,并且也是不可缺少的。MicrosoftDeveloperNetworkOnLine:www.microsoft.com/msdn/default.htm.經過免費的登記過程之后,讀者就可以瀏覽大量的MSDN資源了。