亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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ù)處理等機(jī)制,設(shè)計(jì)了一個(gè)模擬系統(tǒng),用以模擬MFC生成窗口應(yīng)用程序的具體過程及響應(yīng)各種消息,以助于深入領(lǐng)會(huì)、理解、應(yīng)用MFC架構(gòu),從而編寫更好的應(yīng)用程序。

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

        中圖分類號(hào): TN711?34; TP391 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 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++是功能強(qiáng)大的計(jì)算機(jī)編程語言,Microsoft Visual C++(簡稱VC)是微軟提供的基于C/C++的應(yīng)用程序集成開發(fā)工具。VC擁有豐富的功能和大量的擴(kuò)展庫,利用它可以方便地編寫各式各樣的應(yīng)用軟件,是面向?qū)ο蠹夹g(shù)程序設(shè)計(jì)語言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)用程序,但對(duì)于MFC應(yīng)用程序窗口具體創(chuàng)建過程的介紹則相對(duì)簡單,程序員感覺MFC框架生成窗口的過程復(fù)雜,難以理解MFC的動(dòng)態(tài)性、診斷性、持續(xù)性這三大特點(diǎn),以及消息映射機(jī)制?;谶@些因素,添加、處理各種消息更無所適從。本文詳細(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í)行一個(gè)典型的Win32窗口程序的結(jié)構(gòu)如下:

        int WINAPI WinMain (HINSTANCE hInstance,

        HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow){

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        4 結(jié) 語

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

        參考文獻(xiàn)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        4 結(jié) 語

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

        參考文獻(xiàn)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        4 結(jié) 語

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

        參考文獻(xiàn)

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

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

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

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

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

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

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

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

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

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

        欧美精品一区二区蜜臀亚洲| 亚洲中文字幕第15页| 凌辱人妻中文字幕一区| 粗大猛烈进出高潮视频| 99热精品成人免费观看| 亚洲一区二区av偷偷| 一区二区国产av网站| 亚洲啪av永久无码精品放毛片| 亚洲天堂在线视频播放| 日本精品国产1区2区3区| 性感女教师在线免费观看| 粗大猛烈进出高潮视频| 午夜tv视频免费国产区4| 大岛优香中文av在线字幕| 白嫩丰满少妇av一区二区| 亚洲av无码精品色午夜| 国产自产av一区二区三区性色| 宅男天堂亚洲一区二区三区 | 国产一区二区三区四区五区vm| jiZZ国产在线女人水多| 日本中文字幕精品久久| 色综合久久精品亚洲国产| 亚洲无毛片| 蜜臀久久久精品国产亚洲av| 四虎影在永久在线观看| 99热久久精里都是精品6| 久久dvd| 中文字幕亚洲精品一二三区| 色婷婷精品久久二区二区蜜桃| 国产精品对白刺激久久久| 久久婷婷色香五月综合激情| 久久综合亚洲鲁鲁五月天| 日韩国产精品无码一区二区三区 | 91精品国产91| 白白色最新福利视频二| 高清偷自拍亚洲精品三区| 国产午夜福利不卡在线观看视频| 成人全视频在线观看免费播放| 欧美怡春院一区二区三区| 国产在线精品一区二区三区不卡 | 国产在线高清视频|