亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mfc教程_ 1概述.htm

?? 一本優秀的vc程序學習教程,希望能夠幫助大家學習
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0041)http://www.vczx.com/tutorial/mfc/mfc1.php -->
<HTML><HEAD><TITLE>MFC教程_ 概述</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<OL>
  <P align=justify>
  <LI><A name=_Toc445888967></A><A name=_Toc445782372></A><A 
  name=_Toc452640862></A><A name=_Toc457298931></A><B>MFC概述</B> 
  <P></P>
  <OL>
    <P align=justify>
    <LI><B><A name=_Toc445888975></A><A name=_Toc445782378></A><A 
    name=_Toc452640874></A><A name=_Toc457298932></A>MFC是一個編程框架</B> 
    <P></P>
    <P align=justify>MFC (Microsoft Foundation Class 
    Library)中的各種類結合起來構成了一個應用程序框架,它的目的就是讓程序員在此基礎上來建立Windows下的應用程序,這是一種相對SDK來說更為簡單的方法。因為總體上,MFC框架定義了應用程序的輪廓,并提供了用戶接口的標準實現方法,程序員所要做的就是通過預定義的接口把具體應用程序特有的東西填入這個輪廓。Microsoft 
    Visual 
    C++提供了相應的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設計用戶接口;ClassWizard用來協助添加代碼到框架文件;最后,編譯,則通過類庫實現了應用程序特定的邏輯。</P>
    <OL>
      <P align=justify>
      <LI><A name=_Toc457298933></A><B>封裝</B> 
      <P></P>
      <P 
      align=justify>構成MFC框架的是MFC類庫。MFC類庫是C++類庫。這些類或者封裝了Win32應用程序編程接口,或者封裝了應用程序的概念,或者封裝了OLE特性,或者封裝了ODBC和DAO數據訪問的功能,等等,分述如下。</P>
      <P align=justify>(1)對Win32應用程序編程接口的封裝</P>
      <P align=justify>用一個C++ Object來包裝一個Windows Object。例如:class CWnd是一個C++ 
      window object,它把Windows window(HWND)和Windows window有關的API函數封裝在C++ window 
      object的成員函數內,后者的成員變量m_hWnd就是前者的窗口句柄。</P>
      <P align=justify>(2)對應用程序概念的封裝</P>
      <P align=justify>使用SDK編寫Windows應用程序時,總要定義窗口過程,登記Windows 
      Class,創建窗口,等等。MFC把許多類似的處理封裝起來,替程序員完成這些工作。另外,MFC提出了以文檔-視圖為中心的編程模式,MFC類庫封裝了對它的支持。文檔是用戶操作的數據對象,視圖是數據操作的窗口,用戶通過它處理、查看數據。</P>
      <P align=justify>(3)對COM/OLE特性的封裝</P>
      <P 
      align=justify>OLE建立在COM模型之上,由于支持OLE的應用程序必須實現一系列的接口(Interface),因而相當繁瑣。MFC的OLE類封裝了OLE 
      API大量的復雜工作,這些類提供了實現OLE的更高級接口。</P>
      <P align=justify>(4)對ODBC功能的封裝</P>
      <P align=justify>以少量的能提供與ODBC之間更高級接口的C++類,封裝了ODBC 
      API的大量的復雜的工作,提供了一種數據庫編程模式。</P>
      <P align=justify></P>
      <LI><A name=_Toc457298934></A><B>繼承</B> 
      <P></P>
      <P 
      align=justify>首先,MFC抽象出眾多類的共同特性,設計出一些基類作為實現其他類的基礎。這些類中,最重要的類是CObject和CCmdTarget。CObject是MFC的根類,絕大多數MFC類是其派生的,包括CCmdTarget。CObject 
      實現了一些重要的特性,包括動態類信息、動態創建、對象序列化、對程序調試的支持,等等。所有從CObject派生的類都將具備或者可以具備CObject所擁有的特性。CCmdTarget通過封裝一些屬性和方法,提供了消息處理的架構。MFC中,任何可以處理消息的類都從CCmdTarget派生。</P>
      <P 
      align=justify>針對每種不同的對象,MFC都設計了一組類對這些對象進行封裝,每一組類都有一個基類,從基類派生出眾多更具體的類。這些對象包括以下種類:窗口對象,基類是CWnd;應用程序對象,基類是CwinThread;文檔對象,基類是Cdocument,等等。</P>
      <P align=justify>程序員將結合自己的實際,從適當的MFC類中派生出自己的類,實現特定的功能,達到自己的編程目的。</P>
      <P align=justify></P>
      <LI><A name=_Toc457298935></A><B>虛擬函數和動態約束</B> 
      <P></P>
      <P 
      align=justify>MFC以“C++”為基礎,自然支持虛擬函數和動態約束。但是作為一個編程框架,有一個問題必須解決:如果僅僅通過虛擬函數來支持動態約束,必然導致虛擬函數表過于臃腫,消耗內存,效率低下。例如,CWnd封裝 
      Windows窗口對象時,每一條Windows消息對應一個成員函數,這些成員函數為派生類所繼承。如果這些函數都設計成虛擬函數,由于數量太多,實現起來不現實。于是,MFC建立了消息映射機制,以一種富有效率、便于使用的手段解決消息處理函數的動態約束問題。</P>
      <P 
      align=justify>這樣,通過虛擬函數和消息映射,MFC類提供了豐富的編程接口。程序員繼承基類的同時,把自己實現的虛擬函數和消息處理函數嵌入MFC的編程框架。MFC編程框架將在適當的時候、適當的地方來調用程序的代碼。本書將充分的展示MFC調用虛擬函數和消息處理函數的內幕,讓讀者對MFC的編程接口有清晰的理解。</P>
      <P align=justify></P>
      <LI><A name=_Toc457298936></A><B>MFC的宏觀框架體系</B> 
      <P></P></LI></OL>
    <P 
    align=justify>如前所述,MFC實現了對應用程序概念的封裝,把類、類的繼承、動態約束、類的關系和相互作用等封裝起來。這樣封裝的結果對程序員來說,是一套開發模板(或者說模式)。針對不同的應用和目的,程序員采用不同的模板。例如,SDI應用程序的模板,MDI應用程序的模板,規則DLL應用程序的模板,擴展DLL應用程序的模板,OLE/ACTIVEX應用程序的模板,等等。</P>
    <P 
    align=justify>這些模板都采用了以文檔-視為中心的思想,每一個模板都包含一組特定的類。典型的MDI應用程序的構成將在下一節具體討論。</P>
    <P 
    align=justify>為了支持對應用程序概念的封裝,MFC內部必須作大量的工作。例如,為了實現消息映射機制,MFC編程框架必須要保證首先得到消息,然后按既定的方法進行處理。又如,為了實現對DLL編程的支持和多線程編程的支持,MFC內部使用了特別的處理方法,使用模塊狀態、線程狀態等來管理一些重要信息。雖然,這些內部處理對程序員來說是透明的,但是,懂得和理解MFC內部機制有助于寫出功能靈活而強大的程序。</P>
    <P align=justify></P>
    <P align=justify>總之,MFC封裝了Win32 API,OLE API,ODBC 
    API等底層函數的功能,并提供更高一層的接口,簡化了Windows編程。同時,MFC支持對底層API的直接調用。</P>
    <P 
    align=justify>MFC提供了一個Windows應用程序開發模式,對程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,預定義或實現了許多事件和消息處理,等等。框架或者由其本身處理事件,不依賴程序員的代碼;或者調用程序員的代碼來處理應用程序特定的事件。</P>
    <P 
    align=justify>MFC是C++類庫,程序員就是通過使用、繼承和擴展適當的類來實現特定的目的。例如,繼承時,應用程序特定的事件由程序員的派生類來處理,不感興趣的由基類處理。實現這種功能的基礎是C++對繼承的支持,對虛擬函數的支持,以及MFC實現的消息映射機制。</P>
    <P align=justify></P>
    <LI><A name=_Toc445888976></A><A name=_Toc445782379></A><A 
    name=_Toc452640875></A><A name=_Toc457298937></A><B>MDI應用程序的構成</B> 
    <P></P>
    <P align=justify>本節解釋一個典型的MDI應用程序的構成。</P>
    <P 
    align=justify>用AppWizard產生一個MDI工程t(無OLE等支持),AppWizard創建了一系列文件,構成了一個應用程序框架。這些文件分四類:頭文件(.h),實現文件(.cpp),資源文件(.rc),模塊定義文件(.def),等。</P>
    <OL>
      <P align=justify>
      <LI><A name=_Toc457298938></A><B>構成應用程序的對象</B> 
      <P></P>
      <P align=justify>圖1-1解釋了該應用程序的結構,箭頭表示信息流向。</P>
      <P align=justify></P><IMG height=281 hspace=12 
      src="MFC教程_ 1概述.files/image104.gif" width=420 align=left> 
      <P 
      align=justify>從CWinApp、CDocument、CView、CMDIFrameWnd、CMDIChildWnd類對應地派生出CTApp、CTDoc、CTView、CMainFrame、CChildFrame五個類,這五個類的實例分別是應用程序對象、文檔對象、視對象、主框架窗口對象和文檔邊框窗口對象。主框架窗口包含了視窗口、工具條和狀態欄。對這些類或者對象解釋如下。</P>
      <P align=justify>(1)應用程序</P>
      <P 
      align=justify>應用程序類派生于CWinApp。基于框架的應用程序必須有且只有一個應用程序對象,它負責應用程序的初始化、運行和結束。</P>
      <P align=justify>(2)邊框窗口</P>
      <P 
      align=justify>如果是SDI應用程序,從CFrameWnd類派生邊框窗口類,邊框窗口的客戶子窗口(MDIClient)直接包含視窗口;如果是MDI應用程序,從CMDIFrameWnd類派生邊框窗口類,邊框窗口的客戶子窗口(MDIClient)直接包含文檔邊框窗口。</P>
      <P 
      align=justify>如果要支持工具條、狀態欄,則派生的邊框窗口類還要添加CToolBar和CStatusBar類型的成員變量,以及在一個OnCreate消息處理函數中初始化這兩個控制窗口。</P>
      <P 
      align=justify>邊框窗口用來管理文檔邊框窗口、視窗口、工具條、菜單、加速鍵等,協調半模式狀態(如上下文的幫助(SHIFT+F1模式)和打印預覽)。</P>
      <P align=justify>(3)文檔邊框窗口</P>
      <P align=justify>文檔邊框窗口類從CMDIChildWnd類派生,MDI應用程序使用文檔邊框窗口來包含視窗口。</P>
      <P align=justify>(4)文檔</P>
      <P 
      align=justify>文檔類從CDocument類派生,用來管理數據,數據的變化、存取都是通過文檔實現的。視窗口通過文檔對象來訪問和更新數據。</P>
      <P align=justify>(5)視</P>
      <P 
      align=justify>視類從CView或它的派生類派生。視和文檔聯系在一起,在文檔和用戶之間起中介作用,即視在屏幕上顯示文檔的內容,并把用戶輸入轉換成對文檔的操作。</P>
      <P align=justify>(6)文檔模板</P>
      <P 
      align=justify>文檔模板類一般不需要派生。MDI應用程序使用多文檔模板類CMultiDocTemplate;SDI應用程序使用單文檔模板類CSingleDocTemplate。</P>
      <P 
      align=justify>應用程序通過文檔模板類對象來管理上述對象(應用程序對象、文檔對象、主邊框窗口對象、文檔邊框窗口對象、視對象)的創建。</P>
      <P align=justify></P>
      <LI><A name=_Toc457298939></A><B>構成應用程序的對象之間的關系</B> 
      <P></P><B><IMG height=322 hspace=12 src="MFC教程_ 1概述.files/image105.gif" 
      width=433 align=left> </B>
      <P align=justify>這里,用圖的形式可直觀地表示所涉及的MFC類的繼承或者派生關系,如圖1-2所示意。</P>
      <P 
      align=justify>圖1-2所示的類都是從CObject類派生出來的;所有處理消息的類都是從CCmdTarget類派生的。如果是多文檔應用程序,文檔模板使用CMultiDocTemplae,主框架窗口從CMdiFarmeWnd派生,它包含工具條、狀態欄和文檔框架窗口。文檔框架窗口從CMdiChildWnd派生,文檔框架窗口包含視,視從CView或其派生類派生。</P>
      <P align=justify></P>
      <LI><A name=_Toc457298940></A><B>構成應用程序的文件</B> 
      <P></P></LI></OL></LI></OL></LI></OL>
<P 
align=justify>通過上述分析,可知AppWizard產生的MDI框架程序的內容,所定義和實現的類。下面,從文件的角度來考察AppWizard生成了哪些源碼文件,這些文件的作用是什么。表1-1列出了AppWizard所生成的頭文件,表1-2列出了了AppWizard所生成的實現文件及其對頭文件的包含關系。</P>
<P align=justify> </P>
<P align=center>表1-1 AppWizard所生成的頭文件</P>
<P align=justify></P>
<P align=left>
<TABLE cellSpacing=1 cellPadding=7 width=457 border=1>
  <TBODY>
  <TR>
    <TD vAlign=top width="18%">
      <P>頭文件 </P></TD>
    <TD vAlign=top width="82%">
      <P align=justify>用途 </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>stdafx.h </P></TD>
    <TD vAlign=top width="82%">
      <P align=justify>標準AFX頭文件 </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>resource.h </P></TD>
    <TD vAlign=top width="82%">

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
性久久久久久久久| 国产一区二区三区日韩 | 日本亚洲电影天堂| 欧美日韩国产精品成人| 日韩在线播放一区二区| 91精品国模一区二区三区| 久久精品国产精品亚洲精品| 久久一留热品黄| 成人一区二区在线观看| 日韩伦理av电影| 色婷婷久久久久swag精品| 亚洲图片欧美视频| 欧美大肚乱孕交hd孕妇| 国产精品一区二区久久不卡| 国产精品久久午夜| 色噜噜狠狠色综合中国| 天堂av在线一区| 精品国产一区二区三区四区四| 国产成人免费视频精品含羞草妖精| 国产精品美女www爽爽爽| 欧美日韩一区二区三区不卡| 久久99热国产| 亚洲精品视频在线观看网站| 777午夜精品视频在线播放| 国产麻豆精品一区二区| 亚洲色图第一区| 日韩午夜小视频| 91亚洲精品久久久蜜桃| 日韩国产在线观看一区| 国产精品视频观看| 欧美一区三区四区| av亚洲精华国产精华| 免费不卡在线观看| 亚洲天堂久久久久久久| 欧美刺激脚交jootjob| 91欧美激情一区二区三区成人| 日韩av电影一区| 亚洲嫩草精品久久| 精品国产一区二区精华| 欧美影院精品一区| 国产乱一区二区| 日日夜夜精品免费视频| 日韩一区中文字幕| www国产精品av| 欧美日韩国产影片| 一本色道久久综合亚洲91| 国产电影精品久久禁18| 五月激情综合网| 亚洲人成精品久久久久| 欧美激情一区二区三区在线| 日韩欧美国产精品| 欧美日韩在线播放三区| 一本在线高清不卡dvd| 懂色av一区二区三区免费观看| 奇米综合一区二区三区精品视频| 一区二区三区在线视频观看58| 欧美国产一区视频在线观看| 日韩欧美亚洲国产另类| 欧美日韩国产中文| 在线观看日韩电影| 91福利视频久久久久| 成人18视频在线播放| 国产一区二区三区四| 久久精品av麻豆的观看方式| 性欧美疯狂xxxxbbbb| 亚洲综合在线视频| 国产精品国产a| 国产精品久久久久久户外露出| 国产日韩成人精品| 国产欧美一区二区三区在线看蜜臀 | 久久精品久久综合| 亚洲mv大片欧洲mv大片精品| 亚洲成a人v欧美综合天堂下载 | 7777精品伊人久久久大香线蕉的| 日本韩国一区二区三区视频| 99久久免费精品高清特色大片| 成人美女视频在线看| 成人免费观看视频| 成人18精品视频| 91小视频免费看| 欧洲一区二区三区在线| 91九色02白丝porn| 欧美图片一区二区三区| 欧美三级中文字| 欧美电影影音先锋| 欧美一区二区视频免费观看| 日韩欧美一区二区在线视频| 精品免费日韩av| 久久老女人爱爱| 国产精品天天摸av网| 中文字幕在线播放不卡一区| 亚洲精品精品亚洲| 亚洲大尺度视频在线观看| 爽爽淫人综合网网站| 另类中文字幕网| 国产一区在线看| 成人av电影在线| 欧美性感一区二区三区| 欧美一区二区三区人| 久久久一区二区| 亚洲欧美区自拍先锋| 午夜精品在线看| 激情成人午夜视频| av资源站一区| 3d动漫精品啪啪一区二区竹菊| 日韩欧美中文字幕精品| 国产精品理伦片| 亚洲在线视频一区| 精品亚洲国内自在自线福利| av资源网一区| 日韩欧美一二区| 亚洲欧美日韩久久精品| 日韩电影一区二区三区| 丁香啪啪综合成人亚洲小说 | 麻豆成人免费电影| 成人伦理片在线| 欧美伦理影视网| 国产丝袜欧美中文另类| 亚洲亚洲精品在线观看| 国产精品亚洲一区二区三区在线| 91欧美一区二区| 2014亚洲片线观看视频免费| 亚洲黄色av一区| 国产精一区二区三区| 欧美日韩一区视频| 国产日韩欧美激情| 日韩电影在线一区| 91视频在线观看免费| 日韩欧美黄色影院| 亚洲综合免费观看高清完整版在线| 久久国产欧美日韩精品| 在线国产电影不卡| 国产精品免费人成网站| 免费不卡在线视频| 欧美色网一区二区| 国产精品久久久久一区| 久久精品国产**网站演员| 欧美三级午夜理伦三级中视频| 国产色91在线| 久久99热狠狠色一区二区| 欧美喷水一区二区| 亚洲精品菠萝久久久久久久| 国产成人午夜片在线观看高清观看| 欧美一区二区三区四区在线观看| 亚洲欧美日本韩国| proumb性欧美在线观看| 久久免费国产精品| 久久99热这里只有精品| 欧美一区二区三区喷汁尤物| 婷婷国产v国产偷v亚洲高清| 91天堂素人约啪| 国产精品国产精品国产专区不片| 国产伦理精品不卡| 精品久久久久香蕉网| 麻豆国产欧美日韩综合精品二区| 6080国产精品一区二区| 亚洲成av人在线观看| 欧洲在线/亚洲| 亚洲综合精品久久| 日本高清不卡在线观看| 亚洲乱码日产精品bd| 色婷婷狠狠综合| 亚洲精品高清在线观看| 欧美亚洲国产一区在线观看网站 | 日韩高清在线不卡| 欧美区一区二区三区| 午夜精品福利一区二区三区蜜桃| 91福利国产精品| 舔着乳尖日韩一区| 538在线一区二区精品国产| 肉色丝袜一区二区| 欧美一区二区在线免费播放 | 国产午夜精品一区二区| 高清不卡一区二区在线| 国产精品美女久久久久久| 成人av在线一区二区| 成人欧美一区二区三区1314| 91浏览器打开| 亚洲一本大道在线| 日韩欧美在线影院| 国产精品1区2区| 亚洲欧美综合在线精品| 在线免费观看日本一区| 丝袜诱惑制服诱惑色一区在线观看 | 国产精品久久久久久久久图文区 | 成人小视频在线观看| 亚洲天堂成人在线观看| 欧美日韩一区二区三区高清| 日韩av电影天堂| 国产日韩一级二级三级| 色噜噜狠狠一区二区三区果冻| 丝袜美腿亚洲一区| 久久精品视频网| 色婷婷av一区二区三区软件| 青青草国产精品97视觉盛宴| 久久你懂得1024| 色综合天天综合在线视频| 久久精品99久久久| 国产亚洲va综合人人澡精品| 91丨九色丨国产丨porny|