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

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

?? mfc教程_ 概述.htm

?? MFC 詳細教程,是學習MFC不可多得的資料.
?? 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.1586" 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教程_ 概述.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教程_ 概述.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性久久久久蜜臀aⅴ| 欧美性受xxxx黑人xyx性爽| 中文字幕日韩一区| 大陆成人av片| 日本一区免费视频| 国产乱色国产精品免费视频| 日韩欧美一区二区免费| 日韩国产高清影视| 欧美一卡二卡在线观看| 天天爽夜夜爽夜夜爽精品视频| 欧美伊人久久久久久久久影院| 伊人婷婷欧美激情| 91激情五月电影| 亚洲一区二区在线播放相泽| 91麻豆自制传媒国产之光| 中文字幕一区二区三区不卡| 成人福利视频在线| **欧美大码日韩| 97久久超碰国产精品| 国产精品家庭影院| 91视频com| 亚洲午夜国产一区99re久久| 色系网站成人免费| 亚洲综合激情另类小说区| 欧美综合一区二区| 婷婷综合在线观看| 欧美大白屁股肥臀xxxxxx| 毛片一区二区三区| 久久蜜臀精品av| 成人av在线网站| 亚洲一卡二卡三卡四卡无卡久久| 欧美日韩第一区日日骚| 日韩经典中文字幕一区| 老司机午夜精品| 精品国产制服丝袜高跟| 国产成人av电影在线播放| 中文字幕在线不卡一区| 日本黄色一区二区| 爽好久久久欧美精品| 欧美mv日韩mv国产| 成人免费精品视频| 亚洲午夜久久久久久久久电影院 | 色综合天天在线| 日韩黄色免费网站| 欧美写真视频网站| 成人理论电影网| 美脚の诱脚舐め脚责91| 综合婷婷亚洲小说| 中文字幕精品综合| 国产亚洲人成网站| 久久精品夜色噜噜亚洲a∨| 91精品国产综合久久久久久久 | 91视频一区二区三区| 一区二区三区欧美视频| 欧美欧美午夜aⅴ在线观看| 男女男精品视频网| 欧美国产激情一区二区三区蜜月| 一区二区高清在线| 五月天婷婷综合| 国产成人av自拍| 国产精品白丝jk白祙喷水网站| 欧美日韩中文字幕一区| www.久久久久久久久| 福利电影一区二区| 风间由美一区二区av101| 国产成人在线观看免费网站| 国产一区二区导航在线播放| 91国偷自产一区二区三区成为亚洲经典 | 国产91综合一区在线观看| 日韩一区在线播放| 日韩一级免费观看| 99久久99久久免费精品蜜臀| 午夜激情久久久| 欧美国产1区2区| 欧美精品电影在线播放| 成人一级黄色片| 热久久免费视频| 最近中文字幕一区二区三区| 欧美电视剧在线观看完整版| 91亚洲国产成人精品一区二区三| 另类调教123区| 一区二区欧美在线观看| 26uuu亚洲| 欧美卡1卡2卡| 99re这里都是精品| 国产做a爰片久久毛片| 亚洲一级电影视频| 欧美国产日韩在线观看| 91精品国产美女浴室洗澡无遮挡| 91天堂素人约啪| 久久久国际精品| 欧美日韩国产高清一区二区| 岛国一区二区在线观看| 久久精品国产一区二区三区免费看 | 久久99精品网久久| av亚洲精华国产精华精| 欧美精品日韩一本| 中文字幕亚洲一区二区av在线| 91麻豆精品国产91| 色综合久久天天| 高清视频一区二区| 久久福利视频一区二区| 亚洲午夜久久久久久久久电影院| 国产精品久久久久影院| 精品国产乱码久久久久久免费| 欧美日韩一二三区| 在线视频综合导航| www.激情成人| 粉嫩aⅴ一区二区三区四区| 麻豆91在线观看| 日韩精品欧美成人高清一区二区| 亚洲精品久久久久久国产精华液| 国产欧美日韩精品a在线观看| 日韩欧美黄色影院| 制服丝袜亚洲精品中文字幕| 色噜噜久久综合| 不卡的电影网站| 成人在线综合网站| 丁香婷婷综合网| 国产成人av电影在线观看| 韩国精品在线观看| 加勒比av一区二区| 九九九久久久精品| 久久超碰97中文字幕| 日本欧美一区二区| 日本不卡视频在线| 日韩不卡一区二区三区| 亚洲h在线观看| 性做久久久久久久免费看| 亚洲综合视频在线观看| 亚洲精品第一国产综合野| 亚洲乱码精品一二三四区日韩在线| 国产精品久久久99| 亚洲视频在线一区二区| 亚洲同性gay激情无套| 综合婷婷亚洲小说| 夜夜精品浪潮av一区二区三区| 一区二区三区鲁丝不卡| 亚洲午夜电影在线观看| 亚洲成a人v欧美综合天堂| 亚洲电影视频在线| 日本亚洲视频在线| 久久精品国产亚洲一区二区三区| 久久av资源网| 激情亚洲综合在线| 国产精品亚洲综合一区在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 国内成人自拍视频| 成人美女在线观看| 91麻豆蜜桃一区二区三区| 一本到一区二区三区| 欧美系列在线观看| 欧美一区二区久久| 精品国产一区二区三区久久久蜜月| 久久久久久久久久电影| 中文av字幕一区| 一区二区三区 在线观看视频| 同产精品九九九| 国产一区二区免费视频| 国产成人免费9x9x人网站视频| 白白色 亚洲乱淫| 91国内精品野花午夜精品| 欧美区视频在线观看| 欧美大片在线观看一区二区| 久久久精品一品道一区| 亚洲欧洲精品一区二区三区| 亚洲制服丝袜在线| 美女视频网站黄色亚洲| 国产精品资源在线看| 99久久国产综合精品女不卡| 欧美色综合网站| 精品国产91洋老外米糕| 国产精品精品国产色婷婷| 亚洲线精品一区二区三区八戒| 青青青伊人色综合久久| 国产精品性做久久久久久| 91麻豆国产精品久久| 6080日韩午夜伦伦午夜伦| 久久久久国产精品免费免费搜索| 亚洲人成网站影音先锋播放| 亚洲国产精品久久一线不卡| 久久99精品国产麻豆不卡| 99久久精品免费看国产 | 成人免费毛片嘿嘿连载视频| 色婷婷综合久久久| 日韩欧美在线观看一区二区三区| 久久久久久**毛片大全| 亚洲乱码一区二区三区在线观看| 久久精品国产秦先生| 99久久夜色精品国产网站| 91精品国产综合久久香蕉的特点| 日本一区二区成人在线| 天堂va蜜桃一区二区三区| 成人综合婷婷国产精品久久免费| 在线成人午夜影院| 国产精品电影院|