• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      MFC窗口創(chuàng)建過程的研究

      2014-07-18 07:11:59衛(wèi)洪春彭小利蒲國林
      現(xiàn)代電子技術 2014年11期

      衛(wèi)洪春 彭小利 蒲國林

      摘 要: VC開發(fā)環(huán)境中的Win32 Application生成窗口應用程序,結構簡單清晰,MFC生成窗口應用程序的過程相當復雜。為了剖析MFC生成窗口應用程序的具體過程,深入分析了MFC框架的源代碼及其調(diào)用關系,結合C++面向?qū)ο蠹夹g的封裝、繼承、多態(tài)、編譯預處理等機制,設計了一個模擬系統(tǒng),用以模擬MFC生成窗口應用程序的具體過程及響應各種消息,以助于深入領會、理解、應用MFC架構,從而編寫更好的應用程序。

      關鍵詞: 虛函數(shù); 窗口應用程序; 消息映射; 面向?qū)ο蠹夹g; MFC

      中圖分類號: TN711?34; TP391 文獻標識碼: A 文章編號: 1004?373X(2014)11?0151?04

      Abstract: The program structure generated by Win32 Application in VC development environment is simple and clear. The generation process of MFC generated window application program is fairly complex. In order to analyze the specific process of the MFC generated window application program, the source code of MFC framework and its calling relationship is studied deeply. In combination with encapsulation, inheritance, polymorphism and compiling preprocessor mechanisms of C++ object?orien?ted technology, a simulation system was designed to simulate the specific process of MFC generated window application program, and deal with various messages. It can help programmers to further comprehend and apply MFC architecture to write better Window?based application program.

      Keywords: virtual function; window application program; message mapping; object?oriented technology; MFC

      0 引 言

      C++是功能強大的計算機編程語言,Microsoft Visual C++(簡稱VC)是微軟提供的基于C/C++的應用程序集成開發(fā)工具。VC擁有豐富的功能和大量的擴展庫,利用它可以方便地編寫各式各樣的應用軟件,是面向?qū)ο蠹夹g程序設計語言C++的極佳應用。典型的Win32窗口應用程序的創(chuàng)建過程簡單,結構清晰,但開發(fā)效率不高。利用MFC類庫和應用程序框架,能夠方便地開發(fā)具有Windows標準界面的應用程序。雖然有很多資料介紹利用MFC開發(fā)各種應用程序,但對于MFC應用程序窗口具體創(chuàng)建過程的介紹則相對簡單,程序員感覺MFC框架生成窗口的過程復雜,難以理解MFC的動態(tài)性、診斷性、持續(xù)性這三大特點,以及消息映射機制。基于這些因素,添加、處理各種消息更無所適從。本文詳細探討MFC的窗口生成過程,給出了窗口生成過程及響應、處理消息的模擬程序,以幫助理解MFC的窗口創(chuàng)建過程[1]。

      1 Win32窗口程序與基于MFC的窗口應用

      程序的基本結構

      1.1 Win32窗口程序的基本結構

      Win32窗口程序的執(zhí)行入口是WinMain函數(shù),其功能相當于C語言中的main函數(shù)。生成并執(zhí)行一個典型的Win32窗口程序的結構如下:

      int WINAPI WinMain (HINSTANCE hInstance,

      HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){

      定義窗口類對象; 注冊窗口類對象; 創(chuàng)建窗口; 顯示窗口;更新窗口; 啟動消息循環(huán);

      其中WinMain函數(shù)體的功能相對固定,程序員所需做的主要工作是處理各種消息,即定義窗口WndPro函數(shù)的功能。生成并執(zhí)行一個Win32窗口程序可通過VC的Win32 Application向?qū)瓿伞?梢奧in32窗口程序的結構簡單明了,修改方便,但隨著問題越來越復雜、規(guī)模越來越大,系統(tǒng)開發(fā)與維護的困難也隨之增加。VC集成開發(fā)環(huán)境提供的MFC框架為建立功能強大的Windows應用程序提供了方便。

      1.2 基于MFC的窗口應用程序的基本結構

      使用AppWizard開發(fā)一個基于MFC的項目名為MyFirstMFC的單文檔窗口程序,其結構如圖1所示。

      運行該程序后,可生成圖2所示的窗口應用程序。在項目工作區(qū)中各個類的功能如下:

      CMyFirstMFCApp:應用程序類,負責程序的初始化和結束處理;

      CMainFrame:主窗口類,負責主窗口的創(chuàng)建、顯示以及消息派發(fā);

      CMyFirstMFCDoc:文檔類,負責應用程序的數(shù)據(jù)存儲、修改和管理;

      CMyFirstMFCView:視圖類,負責為數(shù)據(jù)的顯示和修改提供人機界面。

      生成一個基于MFC的應用程序的過程相對簡單,但應用程序窗口的具體創(chuàng)建過程卻顯得晦澀難懂。困惑的是:沒有編寫任何代碼,便得到可以編譯運行的應用程序;在Win32 Application中看到的應用程序執(zhí)行入口WinMain,在該程序中卻不見蹤影。本質(zhì)上,Windows程序結構沒有變化,程序的最底層仍然是WinMain主函數(shù)和窗口函數(shù)WndProc。下面詳細分析并模擬MFC生成窗口應用程序的過程。

      2 系統(tǒng)結構分析

      MFC是基于面向?qū)ο蟮腃++編程技術的開發(fā)平臺,系統(tǒng)架構特別復雜,主要體現(xiàn)在:系統(tǒng)類的層次結構;動態(tài)性、診斷性、持續(xù)性這三大特點;采用消息映射表而不是面向?qū)ο笾械奶摵瘮?shù)來響應和處理消息。為了實現(xiàn)模擬MFC主框架窗口的生成過程,設計了幾個關鍵類[2?6],類的層次結構如圖3所示,各個類的功能見表1。

      3 系統(tǒng)詳細設計

      該模擬系統(tǒng)中的各個類的詳細設計如圖4所示。其中,黑色實線標識了類的層次關系,黑色虛線標識了程序執(zhí)行過程中的調(diào)用順序。

      實現(xiàn)該系統(tǒng)的關鍵代碼如下:

      在WinMain主調(diào)函數(shù)中,程序按照圖4中虛線箭頭所指方向順序執(zhí)行,其中,消息處理函數(shù)采用Win32 application 中的switch?case結構。程序?qū)崿F(xiàn)了窗口的生成,位圖的加載,各種消息的響應 [7?10]。例如,窗口程序接收“鼠標左鍵按下”消息后的運算結果如圖5所示。

      4 結 語

      MFC框架生成窗口的過程是基于Win32 的窗口創(chuàng)建過程,是對Win32創(chuàng)建過程的面向?qū)ο蠹夹g的封裝。盡管MFC架構相當復雜,本文模擬并實現(xiàn)了MFC的基于面向?qū)ο蠹夹g生成窗口的過程及消息響應。模擬程序?qū)FC的消息處理采用傳統(tǒng)的switch?case結構,但實際的MFC的消息處理機制拋棄了傳統(tǒng)的消息處理結構,也沒有利用面向?qū)ο蠹夹g的虛函數(shù)機制,而是采用消息映射表模式,完成對消息的響應。MFC窗口創(chuàng)建過程的模擬程序?qū)斫獠㈧`活運用MFC編寫各種應用軟件有較好的參考作用。

      參考文獻

      [1] 車忠志,孫雪雁.MFC應用程序基本框架分析[J].農(nóng)業(yè)網(wǎng)絡信息,2010(9):145?147.

      [2] 孔垂柳.VC++中MFC框架技術探索[J].吉林建筑工程學院學報,2009(8):82?84.

      [3] 梅章明,張秀山.基于MFC和OpenGL的噴泉模擬實現(xiàn)[J].微型機與應用,2012(17):41?43.

      [4] 劉連喜,徐惠民.MFC框架中的設計模式分析[J].計算機應用與軟件,2005(9):50?52.

      [5] 徐璇,姜明新,黃靜,等.基于MFC的工程軟件界面設計[J].電子設計工程,2011(21):11?13.

      [6] 范志先,孫殿柱,李延瑞,等.采用MFC開發(fā)用戶交互界面的新方法[J].工程圖學學報,2008(4):160?163.

      [7] 謝裕敏,舒輝,陳建敏,等.MFC消息響應函數(shù)的逆向定位[J].計算機應用,2009(5):1393?1396.

      [8] 夏俊杰,趙剛.基于MFC的代碼編輯器設計方法[J].現(xiàn)代電子技術,2012,35(4):28?30.

      [9] 劉玲,曹建秋,周建,等.基于編程切入點的MFC教學方法研究[J].西南師范大學學報:自然科學版,2010(4):115?119.

      [10] 錢樂毅.基于MFC的矢量圖形系統(tǒng)研究與實現(xiàn)[J].北京測繪,2012(1):1?4.

      2 系統(tǒng)結構分析

      MFC是基于面向?qū)ο蟮腃++編程技術的開發(fā)平臺,系統(tǒng)架構特別復雜,主要體現(xiàn)在:系統(tǒng)類的層次結構;動態(tài)性、診斷性、持續(xù)性這三大特點;采用消息映射表而不是面向?qū)ο笾械奶摵瘮?shù)來響應和處理消息。為了實現(xiàn)模擬MFC主框架窗口的生成過程,設計了幾個關鍵類[2?6],類的層次結構如圖3所示,各個類的功能見表1。

      3 系統(tǒng)詳細設計

      該模擬系統(tǒng)中的各個類的詳細設計如圖4所示。其中,黑色實線標識了類的層次關系,黑色虛線標識了程序執(zhí)行過程中的調(diào)用順序。

      實現(xiàn)該系統(tǒng)的關鍵代碼如下:

      在WinMain主調(diào)函數(shù)中,程序按照圖4中虛線箭頭所指方向順序執(zhí)行,其中,消息處理函數(shù)采用Win32 application 中的switch?case結構。程序?qū)崿F(xiàn)了窗口的生成,位圖的加載,各種消息的響應 [7?10]。例如,窗口程序接收“鼠標左鍵按下”消息后的運算結果如圖5所示。

      4 結 語

      MFC框架生成窗口的過程是基于Win32 的窗口創(chuàng)建過程,是對Win32創(chuàng)建過程的面向?qū)ο蠹夹g的封裝。盡管MFC架構相當復雜,本文模擬并實現(xiàn)了MFC的基于面向?qū)ο蠹夹g生成窗口的過程及消息響應。模擬程序?qū)FC的消息處理采用傳統(tǒng)的switch?case結構,但實際的MFC的消息處理機制拋棄了傳統(tǒng)的消息處理結構,也沒有利用面向?qū)ο蠹夹g的虛函數(shù)機制,而是采用消息映射表模式,完成對消息的響應。MFC窗口創(chuàng)建過程的模擬程序?qū)斫獠㈧`活運用MFC編寫各種應用軟件有較好的參考作用。

      參考文獻

      [1] 車忠志,孫雪雁.MFC應用程序基本框架分析[J].農(nóng)業(yè)網(wǎng)絡信息,2010(9):145?147.

      [2] 孔垂柳.VC++中MFC框架技術探索[J].吉林建筑工程學院學報,2009(8):82?84.

      [3] 梅章明,張秀山.基于MFC和OpenGL的噴泉模擬實現(xiàn)[J].微型機與應用,2012(17):41?43.

      [4] 劉連喜,徐惠民.MFC框架中的設計模式分析[J].計算機應用與軟件,2005(9):50?52.

      [5] 徐璇,姜明新,黃靜,等.基于MFC的工程軟件界面設計[J].電子設計工程,2011(21):11?13.

      [6] 范志先,孫殿柱,李延瑞,等.采用MFC開發(fā)用戶交互界面的新方法[J].工程圖學學報,2008(4):160?163.

      [7] 謝裕敏,舒輝,陳建敏,等.MFC消息響應函數(shù)的逆向定位[J].計算機應用,2009(5):1393?1396.

      [8] 夏俊杰,趙剛.基于MFC的代碼編輯器設計方法[J].現(xiàn)代電子技術,2012,35(4):28?30.

      [9] 劉玲,曹建秋,周建,等.基于編程切入點的MFC教學方法研究[J].西南師范大學學報:自然科學版,2010(4):115?119.

      [10] 錢樂毅.基于MFC的矢量圖形系統(tǒng)研究與實現(xiàn)[J].北京測繪,2012(1):1?4.

      2 系統(tǒng)結構分析

      MFC是基于面向?qū)ο蟮腃++編程技術的開發(fā)平臺,系統(tǒng)架構特別復雜,主要體現(xiàn)在:系統(tǒng)類的層次結構;動態(tài)性、診斷性、持續(xù)性這三大特點;采用消息映射表而不是面向?qū)ο笾械奶摵瘮?shù)來響應和處理消息。為了實現(xiàn)模擬MFC主框架窗口的生成過程,設計了幾個關鍵類[2?6],類的層次結構如圖3所示,各個類的功能見表1。

      3 系統(tǒng)詳細設計

      該模擬系統(tǒng)中的各個類的詳細設計如圖4所示。其中,黑色實線標識了類的層次關系,黑色虛線標識了程序執(zhí)行過程中的調(diào)用順序。

      實現(xiàn)該系統(tǒng)的關鍵代碼如下:

      在WinMain主調(diào)函數(shù)中,程序按照圖4中虛線箭頭所指方向順序執(zhí)行,其中,消息處理函數(shù)采用Win32 application 中的switch?case結構。程序?qū)崿F(xiàn)了窗口的生成,位圖的加載,各種消息的響應 [7?10]。例如,窗口程序接收“鼠標左鍵按下”消息后的運算結果如圖5所示。

      4 結 語

      MFC框架生成窗口的過程是基于Win32 的窗口創(chuàng)建過程,是對Win32創(chuàng)建過程的面向?qū)ο蠹夹g的封裝。盡管MFC架構相當復雜,本文模擬并實現(xiàn)了MFC的基于面向?qū)ο蠹夹g生成窗口的過程及消息響應。模擬程序?qū)FC的消息處理采用傳統(tǒng)的switch?case結構,但實際的MFC的消息處理機制拋棄了傳統(tǒng)的消息處理結構,也沒有利用面向?qū)ο蠹夹g的虛函數(shù)機制,而是采用消息映射表模式,完成對消息的響應。MFC窗口創(chuàng)建過程的模擬程序?qū)斫獠㈧`活運用MFC編寫各種應用軟件有較好的參考作用。

      參考文獻

      [1] 車忠志,孫雪雁.MFC應用程序基本框架分析[J].農(nóng)業(yè)網(wǎng)絡信息,2010(9):145?147.

      [2] 孔垂柳.VC++中MFC框架技術探索[J].吉林建筑工程學院學報,2009(8):82?84.

      [3] 梅章明,張秀山.基于MFC和OpenGL的噴泉模擬實現(xiàn)[J].微型機與應用,2012(17):41?43.

      [4] 劉連喜,徐惠民.MFC框架中的設計模式分析[J].計算機應用與軟件,2005(9):50?52.

      [5] 徐璇,姜明新,黃靜,等.基于MFC的工程軟件界面設計[J].電子設計工程,2011(21):11?13.

      [6] 范志先,孫殿柱,李延瑞,等.采用MFC開發(fā)用戶交互界面的新方法[J].工程圖學學報,2008(4):160?163.

      [7] 謝裕敏,舒輝,陳建敏,等.MFC消息響應函數(shù)的逆向定位[J].計算機應用,2009(5):1393?1396.

      [8] 夏俊杰,趙剛.基于MFC的代碼編輯器設計方法[J].現(xiàn)代電子技術,2012,35(4):28?30.

      [9] 劉玲,曹建秋,周建,等.基于編程切入點的MFC教學方法研究[J].西南師范大學學報:自然科學版,2010(4):115?119.

      [10] 錢樂毅.基于MFC的矢量圖形系統(tǒng)研究與實現(xiàn)[J].北京測繪,2012(1):1?4.

      溧阳市| 怀仁县| 正宁县| 图片| 南康市| 增城市| 西丰县| 铁岭县| 长丰县| 成都市| 马尔康县| 澎湖县| 西盟| 平塘县| 荔波县| 通城县| 玛纳斯县| 尚义县| 白水县| 临桂县| 海林市| 赞皇县| 茂名市| 徐闻县| 南平市| 镇远县| 滕州市| 韶山市| 青海省| 习水县| 福贡县| 侯马市| 公主岭市| 新田县| 安康市| 景东| 柘荣县| 庆安县| 新乡县| 邛崃市| 将乐县|