999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MFC窗口創建過程的研究

2014-07-18 07:11:59衛洪春彭小利蒲國林
現代電子技術 2014年11期

衛洪春 彭小利 蒲國林

摘 要: VC開發環境中的Win32 Application生成窗口應用程序,結構簡單清晰,MFC生成窗口應用程序的過程相當復雜。為了剖析MFC生成窗口應用程序的具體過程,深入分析了MFC框架的源代碼及其調用關系,結合C++面向對象技術的封裝、繼承、多態、編譯預處理等機制,設計了一個模擬系統,用以模擬MFC生成窗口應用程序的具體過程及響應各種消息,以助于深入領會、理解、應用MFC架構,從而編寫更好的應用程序。

關鍵詞: 虛函數; 窗口應用程序; 消息映射; 面向對象技術; 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++的應用程序集成開發工具。VC擁有豐富的功能和大量的擴展庫,利用它可以方便地編寫各式各樣的應用軟件,是面向對象技術程序設計語言C++的極佳應用。典型的Win32窗口應用程序的創建過程簡單,結構清晰,但開發效率不高。利用MFC類庫和應用程序框架,能夠方便地開發具有Windows標準界面的應用程序。雖然有很多資料介紹利用MFC開發各種應用程序,但對于MFC應用程序窗口具體創建過程的介紹則相對簡單,程序員感覺MFC框架生成窗口的過程復雜,難以理解MFC的動態性、診斷性、持續性這三大特點,以及消息映射機制。基于這些因素,添加、處理各種消息更無所適從。本文詳細探討MFC的窗口生成過程,給出了窗口生成過程及響應、處理消息的模擬程序,以幫助理解MFC的窗口創建過程[1]。

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

程序的基本結構

1.1 Win32窗口程序的基本結構

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

int WINAPI WinMain (HINSTANCE hInstance,

HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){

定義窗口類對象; 注冊窗口類對象; 創建窗口; 顯示窗口;更新窗口; 啟動消息循環;

其中WinMain函數體的功能相對固定,程序員所需做的主要工作是處理各種消息,即定義窗口WndPro函數的功能。生成并執行一個Win32窗口程序可通過VC的Win32 Application向導完成。可見Win32窗口程序的結構簡單明了,修改方便,但隨著問題越來越復雜、規模越來越大,系統開發與維護的困難也隨之增加。VC集成開發環境提供的MFC框架為建立功能強大的Windows應用程序提供了方便。

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

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

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

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

CMainFrame:主窗口類,負責主窗口的創建、顯示以及消息派發;

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

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

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

2 系統結構分析

MFC是基于面向對象的C++編程技術的開發平臺,系統架構特別復雜,主要體現在:系統類的層次結構;動態性、診斷性、持續性這三大特點;采用消息映射表而不是面向對象中的虛函數來響應和處理消息。為了實現模擬MFC主框架窗口的生成過程,設計了幾個關鍵類[2?6],類的層次結構如圖3所示,各個類的功能見表1。

3 系統詳細設計

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

實現該系統的關鍵代碼如下:

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

4 結 語

MFC框架生成窗口的過程是基于Win32 的窗口創建過程,是對Win32創建過程的面向對象技術的封裝。盡管MFC架構相當復雜,本文模擬并實現了MFC的基于面向對象技術生成窗口的過程及消息響應。模擬程序對MFC的消息處理采用傳統的switch?case結構,但實際的MFC的消息處理機制拋棄了傳統的消息處理結構,也沒有利用面向對象技術的虛函數機制,而是采用消息映射表模式,完成對消息的響應。MFC窗口創建過程的模擬程序對理解并靈活運用MFC編寫各種應用軟件有較好的參考作用。

參考文獻

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

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

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

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

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

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

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

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

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

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

2 系統結構分析

MFC是基于面向對象的C++編程技術的開發平臺,系統架構特別復雜,主要體現在:系統類的層次結構;動態性、診斷性、持續性這三大特點;采用消息映射表而不是面向對象中的虛函數來響應和處理消息。為了實現模擬MFC主框架窗口的生成過程,設計了幾個關鍵類[2?6],類的層次結構如圖3所示,各個類的功能見表1。

3 系統詳細設計

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

實現該系統的關鍵代碼如下:

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

4 結 語

MFC框架生成窗口的過程是基于Win32 的窗口創建過程,是對Win32創建過程的面向對象技術的封裝。盡管MFC架構相當復雜,本文模擬并實現了MFC的基于面向對象技術生成窗口的過程及消息響應。模擬程序對MFC的消息處理采用傳統的switch?case結構,但實際的MFC的消息處理機制拋棄了傳統的消息處理結構,也沒有利用面向對象技術的虛函數機制,而是采用消息映射表模式,完成對消息的響應。MFC窗口創建過程的模擬程序對理解并靈活運用MFC編寫各種應用軟件有較好的參考作用。

參考文獻

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

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

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

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

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

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

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

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

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

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

2 系統結構分析

MFC是基于面向對象的C++編程技術的開發平臺,系統架構特別復雜,主要體現在:系統類的層次結構;動態性、診斷性、持續性這三大特點;采用消息映射表而不是面向對象中的虛函數來響應和處理消息。為了實現模擬MFC主框架窗口的生成過程,設計了幾個關鍵類[2?6],類的層次結構如圖3所示,各個類的功能見表1。

3 系統詳細設計

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

實現該系統的關鍵代碼如下:

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

4 結 語

MFC框架生成窗口的過程是基于Win32 的窗口創建過程,是對Win32創建過程的面向對象技術的封裝。盡管MFC架構相當復雜,本文模擬并實現了MFC的基于面向對象技術生成窗口的過程及消息響應。模擬程序對MFC的消息處理采用傳統的switch?case結構,但實際的MFC的消息處理機制拋棄了傳統的消息處理結構,也沒有利用面向對象技術的虛函數機制,而是采用消息映射表模式,完成對消息的響應。MFC窗口創建過程的模擬程序對理解并靈活運用MFC編寫各種應用軟件有較好的參考作用。

參考文獻

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

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

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

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

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

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

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

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

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

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

主站蜘蛛池模板: 99re66精品视频在线观看| 伊人色综合久久天天| 国产极品嫩模在线观看91| 99视频在线观看免费| 欧美日韩亚洲综合在线观看| 国产凹凸一区在线观看视频| 欧美亚洲另类在线观看| 免费人成黄页在线观看国产| 夜夜操天天摸| 国产一区二区网站| 国产成人精品视频一区二区电影| 国产成人无码Av在线播放无广告 | 色综合中文| 国产精品护士| 成人无码区免费视频网站蜜臀| 国产亚洲日韩av在线| 亚洲第一中文字幕| 欧美精品高清| 欧美成在线视频| 欧美日本在线观看| 亚洲色欲色欲www网| 无码丝袜人妻| 欧美国产视频| 99热这里只有精品在线播放| 色综合激情网| 久久香蕉欧美精品| 性视频久久| 国产精品综合色区在线观看| 国产亚洲精品无码专| 国产毛片高清一级国语 | 在线无码av一区二区三区| 国产在线专区| 欧美成人日韩| 2048国产精品原创综合在线| 国产欧美日韩va另类在线播放 | 九九久久精品免费观看| 中文字幕第1页在线播| 欧美在线精品怡红院| 亚洲一级毛片免费看| 99久久精品国产综合婷婷| 自拍偷拍一区| 午夜激情福利视频| 91青青视频| 免费人成视网站在线不卡| 欧美特黄一级大黄录像| 久久这里只精品国产99热8| 久久精品这里只有精99品| 无码aaa视频| 国产91线观看| 在线欧美日韩国产| 精品人妻无码中字系列| 91蝌蚪视频在线观看| 精品91在线| 国产亚洲日韩av在线| 亚洲精品无码高潮喷水A| 永久在线精品免费视频观看| 91精品啪在线观看国产| 午夜少妇精品视频小电影| 国产在线拍偷自揄观看视频网站| 久久免费视频播放| 国产色婷婷| 99视频在线免费看| 亚洲精品成人7777在线观看| 亚洲人成在线精品| 国产一在线| 91精品国产情侣高潮露脸| 99国产在线视频| 国产精品自在拍首页视频8| 丰满人妻久久中文字幕| 夜夜拍夜夜爽| 2021国产精品自产拍在线| 91久久性奴调教国产免费| 天天综合网在线| 亚洲性色永久网址| 成人午夜视频网站| 国产主播在线一区| 精品一区国产精品| 91麻豆久久久| 无码人中文字幕| 免费网站成人亚洲| 成人伊人色一区二区三区| www.日韩三级|