• 
    

    
    

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

      ?

      MFC算法概述

      2017-05-05 01:16:32莊鴻昌
      藝術(shù)科技 2016年11期
      關(guān)鍵詞:面向?qū)ο蟪绦蛟O(shè)計(jì)

      莊鴻昌

      摘 要:MFC是微軟基礎(chǔ)類(lèi)庫(kù)的縮寫(xiě)(Microsoft Foundation Classes library),包含了用來(lái)開(kāi)發(fā)C++程序和Windows程序的基礎(chǔ)類(lèi),MFC提供了大量的工具類(lèi),可以提高程序員的編程效率,如簡(jiǎn)單數(shù)據(jù)類(lèi)、文件服務(wù)類(lèi)、集合類(lèi)、Internet工具類(lèi)等。大部分Windows應(yīng)用程序框架來(lái)源于MFC,定義了應(yīng)用程序的結(jié)構(gòu),實(shí)現(xiàn)了應(yīng)用程序的公共部分,封裝了大部分的Windws API函數(shù),降低了編程難度,大大地提高了應(yīng)用程序的開(kāi)發(fā)速度和質(zhì)量。本文著重對(duì)MFC類(lèi)、MFC的應(yīng)用框架和MFC的消息映射與處理三個(gè)方面來(lái)分析。

      關(guān)鍵詞:MFC;C++;C語(yǔ)言;面向?qū)ο蟪绦蛟O(shè)計(jì)

      1 MFC類(lèi)

      類(lèi)的構(gòu)成。MFC庫(kù)中的類(lèi)按層次關(guān)系可分為根類(lèi)(COjbect)、應(yīng)用程序結(jié)構(gòu)體類(lèi)、窗口對(duì)話(huà)框和控件類(lèi)等很多常用的類(lèi)。下面簡(jiǎn)單介紹幾種類(lèi):

      1.1 根類(lèi)

      CObject類(lèi)是MFC的抽象基類(lèi),是MFC中大多數(shù)類(lèi)的根類(lèi),它提供了許多編程所需的公共操作,例如,對(duì)象的建立和刪除、串行劃支持、對(duì)象診斷輸出、運(yùn)行時(shí)信息以及集合類(lèi)的兼容等。

      CObject類(lèi)有三種特性,對(duì)運(yùn)行時(shí)類(lèi)信息的支持,確定對(duì)象是否屬于某一特定的類(lèi),運(yùn)行時(shí)的類(lèi)型信息機(jī)制允許程序檢索對(duì)象的類(lèi)名及其他信息。對(duì)序列化的支持,從文件中讀取對(duì)象或把對(duì)象存入文件的過(guò)程。串行化的支持層,串行化是對(duì)象本身往返于介質(zhì)的一個(gè)存儲(chǔ)過(guò)程。

      1.2 應(yīng)用程序體系結(jié)構(gòu)類(lèi)

      該類(lèi)用于構(gòu)造應(yīng)用程序框架的結(jié)構(gòu),一般用來(lái)填充框架,添加應(yīng)用程序。提供通用功能大多數(shù)應(yīng)用程序,通常情況下,通過(guò)派生類(lèi)從體系結(jié)構(gòu)型類(lèi),將新成員添加或重寫(xiě)現(xiàn)有成員函數(shù)執(zhí)行此操作。命令相關(guān)類(lèi)、線(xiàn)程基類(lèi)、窗口應(yīng)用程序類(lèi)都屬于應(yīng)用程序體系結(jié)構(gòu)類(lèi)。

      1.3 MFC常用的類(lèi)

      CString(字符串類(lèi)),封裝了字符串操作的大部分功能,使用起來(lái)非常方便,可以用如下方法定義并使用CString類(lèi):

      CString s1(“Hello”),s2; //定義兩個(gè)字符串對(duì)象s1,s2

      S2.Format(“C++ %d.”,100) //s2按格式生成字符串(類(lèi)似于printf函數(shù))

      S1+=s2;

      CFile類(lèi)(文件類(lèi)),封裝了文件操作的基本功能,適合于文件的二進(jìn)制讀寫(xiě),如下代碼實(shí)現(xiàn)文件讀操作:

      CFile file; //建立文件對(duì)象

      Char *pbuf =Null; //定義數(shù)據(jù)緩沖區(qū)指針

      UINT ulen =0; //定義變量存儲(chǔ)讀取的內(nèi)容字節(jié)數(shù)

      If(file.open(“C:\\test.txt”,CFile::madeRead)) //用讀方式打開(kāi)文件

      {

      //打開(kāi)文件成功

      Ulen=file.GetLength(); //得到文件長(zhǎng)度

      Pubf=new char[ulen]; //定義一個(gè)動(dòng)態(tài)緩沖區(qū),和文件長(zhǎng)度相同

      File.Read(buf,ulen); //把文件內(nèi)容讀入數(shù)據(jù)緩沖區(qū)

      File.Close(); //關(guān)閉文件

      }

      CArchive(存檔類(lèi)),是一個(gè)高級(jí)的文件類(lèi),在基本數(shù)據(jù)類(lèi)型和自定義類(lèi)的對(duì)象中,它能實(shí)現(xiàn)能面向文件進(jìn)行輸入和輸出操作,能夠讀寫(xiě)字符串,然而CObject類(lèi)本身具有序列化能力,可以實(shí)現(xiàn)派生類(lèi)對(duì)象的文件I/O。

      2 MFC的應(yīng)用程序框架

      目前在計(jì)算機(jī)軟件領(lǐng)域,很多的程序框架已經(jīng)逐步地被開(kāi)發(fā)出來(lái),有的用于編寫(xiě)單機(jī)程序,有的適合網(wǎng)絡(luò)應(yīng)用,有的針對(duì)游戲編程等。

      MFC程序框架充分利用了C++語(yǔ)言中虛函數(shù)與多態(tài)的功能特性,首先定義好了一些常用的基類(lèi),然后用這些類(lèi)的對(duì)象指針構(gòu)建程序框架,并且這些類(lèi)中聲明了許多虛函數(shù),在框架中的關(guān)鍵位置利用對(duì)象指針調(diào)用這些函數(shù)。我們?cè)诰幊痰臅r(shí)候需要繼承這些基類(lèi),為派生類(lèi)添加新的代碼,根據(jù)需要編寫(xiě)基類(lèi)提供的虛函數(shù),接著把應(yīng)用程序框架中的基類(lèi)指針替換成派生類(lèi)指針即可。

      3 MFC的消息映射與處理

      如何在應(yīng)用程序中添加消息映射呢?首先選擇一個(gè)類(lèi)的派生類(lèi),再為這個(gè)類(lèi)添加消息處理成員函數(shù),消息映射以宏定義的代碼實(shí)現(xiàn)??梢允褂妙?lèi)向?qū)lass Wizard工具來(lái)進(jìn)行消息管理,如添加、刪除消息或命令的響應(yīng)函數(shù),還可以添加消息映射代碼實(shí)現(xiàn)。

      下面介紹利用Class Wizard在程序中添加鼠標(biāo)左鍵按下時(shí)的窗口消息處理函數(shù)的基本方法。第一步,運(yùn)行VC++程序,新建EX11-2項(xiàng)目,啟動(dòng)Class Wizard。第二步,在Class name的組合框中選擇CEX11-2View類(lèi),Object IDs的對(duì)象列表頁(yè)隨之改變,列出類(lèi)名和能提供消息界面對(duì)象的ID。第三步,因?yàn)槟康氖窃谝晥D窗口單擊鼠標(biāo)并響應(yīng)消息,所以在Object IDs列表中選擇CEX11-2View,Messages列表中列出了該類(lèi)能夠響應(yīng)的窗口消息和可以重寫(xiě)的虛函數(shù),在其中找到并選擇中WM-LBUTTONDOWN。第四步,可以看到Add Function 由原來(lái)的禁用狀態(tài)變?yōu)榭捎脿顟B(tài),單擊此按鈕,或者雙擊WM-LBUTTONDOWN消息,在CEX11-2View類(lèi)中就會(huì)添加一個(gè)消息響應(yīng)函數(shù)OnLButtonDown(),在Member functions 成員函數(shù)列表中會(huì)添加對(duì)應(yīng)的項(xiàng)目。第五步,單擊OK按鈕,完成消息響應(yīng)函數(shù)的添加過(guò)程。

      在這里,我們只對(duì)MFC算法做一個(gè)大體的分析和表達(dá)。隨著科技和各種電子產(chǎn)品的更新。MFC技術(shù)也在飛速的發(fā)展。十幾年的雄厚技術(shù)已經(jīng)奠定了MFC的生存基礎(chǔ)。它被設(shè)計(jì)成可移植于眾多的平臺(tái),允許其應(yīng)用程序適用于多種不同平臺(tái)。對(duì)于多種編譯器,MFC也是可以移植的,而且有許多軟件開(kāi)發(fā)公司已經(jīng)把它作為一種基于Windows開(kāi)發(fā)標(biāo)準(zhǔn)的應(yīng)用程序框架。而我們需要深入學(xué)習(xí)MFC的知識(shí)。實(shí)現(xiàn)自我價(jià)值。獲得更高能力。

      參考文獻(xiàn):

      [1] Scott Meyer . Effective C++ 改善程序設(shè)計(jì)的具體55個(gè)做法(第2版)[M].侯捷,譯.北京:電子工業(yè)出版社,2007.

      [2] Scott Meyer. Effective C++ 35個(gè)改善編程與設(shè)計(jì)的有效方法(第3版)[M].侯捷,譯.北京:電子工業(yè)出版社,2014.

      猜你喜歡
      面向?qū)ο蟪绦蛟O(shè)計(jì)
      模塊化的面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)研究
      基于項(xiàng)目驅(qū)動(dòng)的面向?qū)ο蟪绦蛟O(shè)計(jì)研究性教學(xué)實(shí)踐
      基于MOOC的編譯原理分階段課程教學(xué)研究
      HAJIF軟件前后處理模塊設(shè)計(jì)與實(shí)現(xiàn)
      CDIO理念下《面向?qū)ο蟪绦蛟O(shè)計(jì)》教學(xué)改革研究
      科技視界(2016年16期)2016-06-29 21:58:51
      獨(dú)立學(xué)院面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)模式的探討與實(shí)踐
      考試周刊(2016年43期)2016-06-18 17:32:22
      軟件工程專(zhuān)業(yè)面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)改革研究
      科技視界(2016年4期)2016-02-22 12:31:42
      面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)研究與實(shí)踐
      “面向?qū)ο蟪绦蛟O(shè)計(jì)”工程實(shí)踐教學(xué)方法改革
      結(jié)合數(shù)字圖像處理的面向?qū)ο蟪绦蛟O(shè)計(jì)課程教學(xué)探討
      教師·中(2015年10期)2015-11-09 12:12:54
      九龙城区| 蒙山县| 九寨沟县| 井陉县| 蒙阴县| 宜黄县| 山丹县| 乡宁县| 大厂| 白水县| 沭阳县| 万山特区| 广南县| 普定县| 永清县| 麻江县| 聊城市| 宽甸| 西乡县| 奈曼旗| 巧家县| 象州县| 波密县| 灌南县| 晋江市| 大邑县| 察隅县| 抚顺县| 托克托县| 巴塘县| 乌兰浩特市| 互助| 佳木斯市| 定襄县| 张家川| 松原市| 丰城市| 平塘县| 东乌| 札达县| 宣城市|