追蹤
加油,端么么。
關於部落格
因為認真,所以開心。
  • 30410

    累積人氣

  • 0

    今日人氣

    3

    追蹤人氣

MFC(Microsoft Foundation Class)

    MFC是一種應用軟體框架(Application Framework),也就是說利用MFC便可擁有視窗的基本功能,程式設計者只要根據本身的需求修改或增加程式功能,即可達到減少開發視窗環境所需要的時間,因之,牛頓的名言「如果說我看得比別人更遠,是因為我站在巨人的肩膀上(If I have seen further than others, it is because I was standing on the shoulders of giants)」,常被引用來比喻應用軟體框架的優點,然而要爬上巨人的肩膀並不是一件輕而易舉的事情,困難的原因來自於具有綿密複雜繼承(Inheritance)關係的物件類別(Object Class),下圖顯示的繼承類別架構僅是九牛一毛,卻已經夠折騰人了。
    市面上介紹C語言的參考書籍,多半以列印“Hello C”作為第一章第一個範例,不過一個五行不到的小小程式,不會讓人輕易打退堂鼓,可是如果想產生一個視窗並且顯示“Hello MFC”,那可就需要了解幾個基礎類別及其成員函式,同時得揚棄尋以往尋找程式起始點main()的老習慣,換成在專案裡頭找到同專案名稱的CPP檔案,然後尋找程式進入點CWinApp::InitInstance()–代表一個繼承CWinApp類別的函式,然後緊接而來的是CFrameWnd類別,如果要在視窗顯示資料,就必須牽扯上Document∕View架構,而那顯然又是另一幅風景,萬事起頭難,但是當一個具有工具列與狀態列的視窗出現在螢幕上時,這一切似乎都不算什麼了。     幸運的是這些類別及其包含的成員函式都相當完整,了解個別函式的功能之後直接拿來用就行了,正所謂「成也類別,敗也類別」,凡事總存在著一體兩面,是類別讓MFC入門門檻離地面多了好幾呎,然而也正是類別讓視窗程式變得俐落。但是如果大家都使用一樣的類別函數,哪來這麼多形形色色的視窗程式?這就不得不提到虛擬函式(Virtual Function)了,程式設計者可以根據需求覆寫(override)虛擬函式,獨一無二的視窗程式便因運而生,簡言之,繼承已有的類別,覆寫虛擬函式加上自己的特色,就是徹底貫徹物件導向程式設計的精神。     MFC其他關於訊息派送(Message Dispatch)、執行時期型別辨識(Runtime Type Information,RTTI)、動態生成(Dynamic Creation)等複雜又有趣的概念就等下次寫了,有興趣的人可以下載侯捷撰寫的“深入淺出MFC”(書本已經絕版,作者歡迎下載電子書),書裡對於MFC細部的程式運作流程皆有詳細的追蹤,耐著性子看完會有豁然開朗的暢快,適合有耐心的好奇寶寶閱讀。如果想知道一些常用的類別與成員函式,文魁出版的“精通MFC視窗程式設計”還蠻不錯的。(還是有盡責地介紹書!)     努力了一段時間完成了一個簡易版的小畫家,也是利用網路上某位巨人的程式碼改造而成的,很多MFC前輩都很慷慨地在網路上分享其成果或解答各式疑難雜症,例如The Code Project網站就兼具質與量,英文版以外幾乎都是簡體字版,儘管簡體字並不構成閱讀的障礙,繁體字版附之闕如卻叫人洩氣。
相簿設定
標籤設定
相簿狀態