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

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

?? mfc

?? 很好的MFC書籍
??
?? 第 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.2900.3132" 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一区二区三区免费野_久草精品视频
国产在线精品免费av| 欧美性视频一区二区三区| 91视频在线看| 精品久久久久久综合日本欧美| 精品久久久久99| 亚洲一级二级三级在线免费观看| 久久91精品久久久久久秒播| 一本大道综合伊人精品热热 | 亚洲成人久久影院| 黄色日韩网站视频| 91精品国产乱| 亚洲一区免费在线观看| 日韩午夜激情视频| 亚洲美腿欧美偷拍| 波多野结衣的一区二区三区| 精品日韩在线观看| 青青国产91久久久久久| 欧美日韩一区国产| 亚洲女人小视频在线观看| 波多野结衣的一区二区三区| 久久夜色精品国产噜噜av| 日韩av网站免费在线| 欧美日韩午夜在线| 亚洲午夜在线电影| 一本一本大道香蕉久在线精品| 国产网红主播福利一区二区| 国产乱码精品一区二区三| 日韩欧美电影一区| 午夜精品久久久久久久久| 日本大香伊一区二区三区| 国产精品久久久久久户外露出 | 久久精品欧美日韩精品| 国产精品一区二区三区四区| 欧美精品一区二区精品网| 国产在线精品一区在线观看麻豆| 日韩精品在线一区二区| 看国产成人h片视频| 精品三级av在线| 国产精品456| 亚洲国产电影在线观看| 99国内精品久久| 一区二区免费在线| 欧美老年两性高潮| 老司机一区二区| 久久只精品国产| 丁香六月综合激情| 亚洲天堂成人在线观看| 在线欧美日韩精品| 五月综合激情婷婷六月色窝| 91精品免费在线| 国产传媒久久文化传媒| 中文字幕一区不卡| 欧美日本一道本在线视频| 美腿丝袜亚洲三区| 欧美国产视频在线| 色婷婷国产精品| 午夜精品123| 欧美—级在线免费片| 99综合电影在线视频| 亚洲在线视频一区| 精品国产一区二区三区久久影院| 盗摄精品av一区二区三区| 亚洲欧美日韩在线不卡| 91精品国产91久久久久久一区二区| 精品在线亚洲视频| 亚洲视频免费观看| 欧美一卡2卡3卡4卡| 成人久久18免费网站麻豆| 亚洲国产精品久久久久秋霞影院 | 国产精品美女一区二区| 欧洲av一区二区嗯嗯嗯啊| 国产做a爰片久久毛片| 亚洲免费看黄网站| 精品美女在线播放| 欧美偷拍一区二区| 国产成人av电影在线| 亚洲va中文字幕| 国产精品大尺度| ww亚洲ww在线观看国产| 久久久久久麻豆| 欧美丝袜丝交足nylons图片| 国产凹凸在线观看一区二区| 亚洲无人区一区| 国产精品欧美极品| 精品福利一二区| 欧美日韩高清不卡| 色综合视频一区二区三区高清| 日本欧美大码aⅴ在线播放| 亚洲欧美欧美一区二区三区| 久久久久久久久岛国免费| 欧美精品久久久久久久久老牛影院| 国产·精品毛片| 韩国精品一区二区| 日韩av电影一区| 亚洲福利视频三区| 亚洲综合激情网| 国产精品电影院| 国产精品乱人伦| 日本一区二区三区久久久久久久久不 | 国产在线精品不卡| 日本欧美一区二区| 午夜国产精品一区| 香蕉久久夜色精品国产使用方法| 综合久久一区二区三区| 国产精品久久久爽爽爽麻豆色哟哟 | 亚洲欧洲日产国码二区| 久久久久久电影| 精品av久久707| 精品日韩欧美在线| 337p日本欧洲亚洲大胆精品| 91精品黄色片免费大全| 欧美剧在线免费观看网站| 在线精品视频一区二区三四| 在线观看一区日韩| wwwwww.欧美系列| www.亚洲精品| 欧美无砖专区一中文字| 91亚洲精华国产精华精华液| 欧美天堂一区二区三区| 亚洲欧美激情插 | 天天色图综合网| 亚洲成人激情自拍| 丝袜a∨在线一区二区三区不卡| 亚洲国产综合91精品麻豆| 亚洲电影第三页| 青草av.久久免费一区| 极品少妇xxxx精品少妇| 国产一区二区91| 国产成人aaa| 91论坛在线播放| 欧美日韩成人一区| 日韩欧美黄色影院| 国产日产亚洲精品系列| 中文字幕不卡在线| 亚洲综合在线观看视频| 三级精品在线观看| 亚洲亚洲精品在线观看| 欧美高清视频不卡网| 91精品国产一区二区三区蜜臀| 91精品在线一区二区| 日韩免费视频一区| 亚洲国产精品av| 在线这里只有精品| 日韩精品电影一区亚洲| 亚洲欧洲成人自拍| 亚洲国产欧美在线人成| 国产一区二区影院| 色中色一区二区| 精品国产一区二区三区久久久蜜月 | 中文字幕一区二区三区在线不卡 | 91成人在线精品| 欧美体内she精高潮| www国产精品av| 亚洲一区二区三区四区在线观看 | 99久久久久久| 日韩无一区二区| 亚洲欧美一区二区三区极速播放 | 精品免费国产二区三区| 亚洲精品成人天堂一二三| 精久久久久久久久久久| 日本乱人伦aⅴ精品| 2024国产精品视频| 舔着乳尖日韩一区| a级高清视频欧美日韩| 日韩精品一区在线观看| 亚洲美女偷拍久久| 国产精品一品二品| 7777精品伊人久久久大香线蕉完整版 | 久久综合色婷婷| 亚洲一区二区精品3399| 成人av免费在线| 久久亚区不卡日本| 欧美aaaaaa午夜精品| 欧美吻胸吃奶大尺度电影| 中文字幕中文字幕一区| 国产精品538一区二区在线| 日韩免费高清av| 午夜伦理一区二区| 欧洲色大大久久| 玉足女爽爽91| 99久久精品国产麻豆演员表| 国产欧美在线观看一区| 极品少妇一区二区三区精品视频 | 久久久久国产一区二区三区四区| 亚洲二区在线视频| 日韩午夜在线观看| 国产三级欧美三级| 美女性感视频久久| 国产欧美精品一区| 视频在线在亚洲| 欧美色倩网站大全免费| 亚洲欧美一区二区久久| 国产福利一区在线| 久久毛片高清国产| 国产高清在线观看免费不卡| 久久香蕉国产线看观看99| 国产精品66部| 国产精品国产三级国产| www.成人网.com| 亚洲欧美日韩国产成人精品影院 |