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

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

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

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

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

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

中圖分類號: TN711?34; TP391 文獻標(biāo)識碼: 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++的應(yīng)用程序集成開發(fā)工具。VC擁有豐富的功能和大量的擴展庫,利用它可以方便地編寫各式各樣的應(yīng)用軟件,是面向?qū)ο蠹夹g(shù)程序設(shè)計語言C++的極佳應(yīng)用。典型的Win32窗口應(yīng)用程序的創(chuàng)建過程簡單,結(jié)構(gòu)清晰,但開發(fā)效率不高。利用MFC類庫和應(yīng)用程序框架,能夠方便地開發(fā)具有Windows標(biāo)準(zhǔn)界面的應(yīng)用程序。雖然有很多資料介紹利用MFC開發(fā)各種應(yīng)用程序,但對于MFC應(yīng)用程序窗口具體創(chuàng)建過程的介紹則相對簡單,程序員感覺MFC框架生成窗口的過程復(fù)雜,難以理解MFC的動態(tài)性、診斷性、持續(xù)性這三大特點,以及消息映射機制?;谶@些因素,添加、處理各種消息更無所適從。本文詳細探討MFC的窗口生成過程,給出了窗口生成過程及響應(yīng)、處理消息的模擬程序,以幫助理解MFC的窗口創(chuàng)建過程[1]。

1 Win32窗口程序與基于MFC的窗口應(yīng)用

程序的基本結(jié)構(gòu)

1.1 Win32窗口程序的基本結(jié)構(gòu)

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

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ū)瓿?。可見Win32窗口程序的結(jié)構(gòu)簡單明了,修改方便,但隨著問題越來越復(fù)雜、規(guī)模越來越大,系統(tǒng)開發(fā)與維護的困難也隨之增加。VC集成開發(fā)環(huán)境提供的MFC框架為建立功能強大的Windows應(yīng)用程序提供了方便。

1.2 基于MFC的窗口應(yīng)用程序的基本結(jié)構(gòu)

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

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

CMyFirstMFCApp:應(yīng)用程序類,負責(zé)程序的初始化和結(jié)束處理;

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

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

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

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

2 系統(tǒng)結(jié)構(gòu)分析

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

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

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

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

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

4 結(jié) 語

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

參考文獻

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

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

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

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

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

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

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

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

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

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

2 系統(tǒng)結(jié)構(gòu)分析

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

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

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

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

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

4 結(jié) 語

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

參考文獻

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

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

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

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

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

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

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

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

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

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

2 系統(tǒng)結(jié)構(gòu)分析

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

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

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

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

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

4 結(jié) 語

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

參考文獻

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

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

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

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

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

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

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

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

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

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

主站蜘蛛池模板: 国产人在线成免费视频| 国产在线视频福利资源站| a毛片免费在线观看| 呦女亚洲一区精品| av天堂最新版在线| 国产精品无码制服丝袜| 激情综合网址| 国产毛片高清一级国语 | 亚洲黄色片免费看| 久久亚洲综合伊人| 国产欧美在线观看精品一区污| 在线欧美国产| 亚洲国产看片基地久久1024| 日韩 欧美 小说 综合网 另类| 成年片色大黄全免费网站久久| 国产色图在线观看| 亚洲无码视频喷水| 2018日日摸夜夜添狠狠躁| 老司国产精品视频91| 成年人久久黄色网站| 国产91蝌蚪窝| 91在线一9|永久视频在线| 国产又爽又黄无遮挡免费观看| igao国产精品| 日韩小视频在线观看| 亚洲欧美日韩另类在线一| 伊人久久影视| 国产网站免费观看| www.99在线观看| 亚洲伦理一区二区| 亚洲v日韩v欧美在线观看| 国产成人精品午夜视频'| 小蝌蚪亚洲精品国产| 婷婷综合在线观看丁香| 日韩最新中文字幕| 国产主播在线一区| 91综合色区亚洲熟妇p| 欧美人人干| 国产一区二区三区在线观看视频| 亚洲色图欧美一区| 97在线观看视频免费| 亚洲精品无码日韩国产不卡| 久久天天躁狠狠躁夜夜躁| 99精品视频九九精品| 69免费在线视频| 女人18毛片一级毛片在线| 国产又色又爽又黄| 久热这里只有精品6| 永久在线精品免费视频观看| 久久久久88色偷偷| 国产精品亚洲片在线va| 国产精品一区在线观看你懂的| 欧洲高清无码在线| 在线永久免费观看的毛片| 国产无吗一区二区三区在线欢| 亚洲精品成人福利在线电影| 国产爽爽视频| 福利视频一区| 伊人91在线| 亚洲欧洲日韩综合| 福利视频99| 99精品热视频这里只有精品7| 国产午夜无码片在线观看网站| 99性视频| 激情亚洲天堂| 国产日本视频91| 2020久久国产综合精品swag| 国产精品短篇二区| 亚洲天堂视频网站| 成人午夜免费观看| 国产精品尹人在线观看| 国产在线高清一级毛片| 成人午夜久久| 东京热av无码电影一区二区| 免费一级α片在线观看| 色妞www精品视频一级下载| 国产免费福利网站| 一区二区无码在线视频| 久久精品丝袜高跟鞋| 少妇人妻无码首页| 久久综合干| 国产系列在线|