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

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

?? mfc教程_ mfc對象的創建.htm

?? MFC (Microsoft Foundation Class Library)中的各種類結合起來構成了一個應用程序框架
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0041)http://www.vczx.com/tutorial/mfc/mfc5.php -->
<HTML><HEAD><TITLE>MFC教程_ MFC對象的創建</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.3354" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<P align=justify>
<LI><A name=_Toc445889035></A><A name=_Toc445782438></A><A 
name=_Toc452640914></A><A name=_Toc457298997></A><B>MFC對象的創建</B> 
<P></P>
<P 
align=justify>前面幾章介紹了MFC的核心概念和思想,即介紹了MFC對Windows對象的封裝方法和特點;MFC對象的動態創建、序列化;MFC消息映射機制。</P>
<P align=justify>現在,考查MFC的應用程序結構體系,即以文檔-視為核心的編程模式。學習本章,應該弄清楚以下問題:</P>
<P align=justify>MFC中諸多MFC對象的關系:應用程序對象,文檔對象,邊框窗口對象,文檔邊框窗口對象,視對象,文檔模板對象等。</P>
<P align=justify>MFC對象的創建和銷毀:由什么對象創建或銷毀什么對象,何時創建,何時銷毀?</P>
<P align=justify>MFC提供了那些接口來支持其編程模式?</P>
<OL>
  <P align=justify>
  <LI><A name=_Toc445889036></A><A name=_Toc445782439></A><A 
  name=_Toc452640915></A><A name=_Toc457298998></A><B>MFC對象的關系</B> 
  <P></P>
  <OL>
    <P align=justify>
    <LI><B><A name=_Toc445889037></A><A name=_Toc445782440></A><A 
    name=_Toc452640916></A><A name=_Toc457298999></A>創建關系</B> 
    <P></P><B><IMG height=187 hspace=12 src="MFC教程_ MFC對象的創建.files/image118.gif" 
    width=288 align=left> </B>
    <P 
    align=justify>這里討論應用程序、文檔模板、邊框窗口、視、文檔等的創建關系。圖5-1大略地表示了創建順序,但表5-1更直接地顯示了創建與被創建的關系。</P>
    <P align=justify> </P>
    <P align=center>表5-1 MFC對象的創建關系</P>
    <TABLE cellSpacing=1 cellPadding=7 width=497 border=1>
      <TBODY>
      <TR>
        <TD vAlign=top width="47%">
          <P align=justify>創建者 </P></TD>
        <TD vAlign=top width="53%">
          <P align=justify>被創建的對象 </P></TD></TR>
      <TR>
        <TD vAlign=top width="47%">
          <P align=justify>應用程序對象 </P></TD>
        <TD vAlign=top width="53%">
          <P align=justify>文檔模板 </P></TD></TR>
      <TR>
        <TD vAlign=top width="47%">
          <P align=justify>文檔模板 </P></TD>
        <TD vAlign=top width="53%">
          <P align=justify>文檔 </P></TD></TR>
      <TR>
        <TD vAlign=top width="47%">
          <P align=justify>文檔模板 </P></TD>
        <TD vAlign=top width="53%">
          <P align=justify>邊框窗口 </P></TD></TR>
      <TR>
        <TD vAlign=top width="47%">
          <P align=justify>邊框窗口 </P></TD>
        <TD vAlign=top width="53%">
          <P align=justify>視 </P></TD></TR></TBODY></TABLE>
    <P align=center> </P>
    <P align=justify></P>
    <LI><A name=_Toc445889038></A><A name=_Toc445782441></A><A 
    name=_Toc452640917></A><A name=_Toc457299000></A><B>交互作用關系</B> 
    <P></P></LI></OL>
  <P 
  align=justify>應用程序對象有一個文檔模板列表,存放一個或多個文檔模板對象;文檔模板對象有一個打開文檔列表,存放一個或多個已經打開的文檔對象;文檔對象有一個視列表,存放顯示該文檔數據的一個或多個視對象;還有一個指針指向創建該文檔的文檔模板對象;視有一個指向其關聯文檔的指針,視是一個子窗口,其父窗口是邊框窗口(或者文檔邊框窗口);文檔邊框窗口有一個指向其當前活動視的指針;文檔邊框窗口是邊框窗口的子窗口。</P>
  <P align=justify>Windows 管理所有已經打開的窗口,把消息或事件發送給目標窗口。通常,命令消息發送給主邊框窗口。</P><IMG 
  height=249 hspace=12 src="MFC教程_ MFC對象的創建.files/image119.gif" width=393 
  align=left> 
  <P align=justify>圖5-2大略地表示了上述關系:</P>
  <P align=justify></P>
  <P align=justify>MFC提供了一些函數來維護這些關系。</P>
  <P align=justify>表5-2列出了從一個對象得到相關對象的方法。</P>
  <P align=center>表5-2 從一個對象得到另一個對象的方法</P>
  <TABLE cellSpacing=1 cellPadding=7 width=497 border=1>
    <TBODY>
    <TR>
      <TD vAlign=top width="29%">
        <P align=center>本對象 </P></TD>
      <TD vAlign=top width="27%">
        <P align=center>要得到的對象 </P></TD>
      <TD vAlign=top width="44%">
        <P align=justify>使用的成員函數 </P></TD></TR>
    <TR>
      <TD vAlign=top width="29%" rowSpan=2>
        <P align=justify>CDocument對象 </P></TD>
      <TD vAlign=top width="27%">
        <P align=justify>視列表 </P></TD>
      <TD vAlign=top width="44%">
        <P align=justify>GetFirstViewPosition</P>
        <P align=justify>GetNextView </P></TD></TR>
    <TR>
      <TD vAlign=top width="27%">
        <P align=justify>文檔模板 </P></TD>
      <TD vAlign=top width="44%">
        <P align=justify>GetDocTemplate </P></TD></TR>
    <TR>
      <TD vAlign=top width="29%" rowSpan=2>
        <P align=justify>CView對象 </P></TD>
      <TD vAlign=top width="27%">
        <P align=justify>文檔對象 </P></TD>
      <TD vAlign=top width="44%">
        <P align=justify>GetDocument </P></TD></TR>
    <TR>
      <TD vAlign=top width="27%">
        <P align=justify>邊框窗口 </P></TD>
      <TD vAlign=top width="44%">
        <P align=justify>GetParentFrame </P></TD></TR>
    <TR>
      <TD vAlign=top width="29%" rowSpan=2>
        <P align=justify>CMDIChildWnd或</P>
        <P align=justify>CFrameWnd對象 </P></TD>
      <TD vAlign=top width="27%">
        <P align=justify>活動視 </P></TD>
      <TD vAlign=top width="44%">
        <P align=justify>GetActiveView </P></TD></TR>
    <TR>
      <TD vAlign=top width="27%">
        <P align=justify>活動視的文檔 </P></TD>
      <TD vAlign=top width="44%">
        <P align=justify>GetActiveDocument </P></TD></TR>
    <TR>
      <TD vAlign=top width="29%">
        <P align=justify>CMDIFrameWnd對象 </P></TD>
      <TD vAlign=top width="27%">
        <P align=justify>活動文檔邊框窗口 </P></TD>
      <TD vAlign=top width="44%">
        <P align=justify>MDIGetActive </P></TD></TR></TBODY></TABLE>
  <P align=center> </P>
  <P align=center>表5-3 從一個對象通知另一個對象的方法:</P>
  <TABLE cellSpacing=1 cellPadding=7 width=497 border=1>
    <TBODY>
    <TR>
      <TD vAlign=top width="31%">
        <P align=justify>本對象 </P></TD>
      <TD vAlign=top width="30%">
        <P align=justify>要通知的對象/動作 </P></TD>
      <TD vAlign=top width="39%">
        <P align=justify>使用的成員函數 </P></TD></TR>
    <TR>
      <TD vAlign=top width="31%">
        <P align=justify>CView對象 </P></TD>
      <TD vAlign=top width="30%">
        <P align=justify>通知文檔更新所有視 </P></TD>
      <TD vAlign=top width="39%">
        <P align=justify>CDocument::UpdateAllViews </P></TD></TR>
    <TR>
      <TD vAlign=top width="31%">
        <P align=justify>CDocument對象 </P></TD>
      <TD vAlign=top width="30%">
        <P align=justify>更新一個視 </P></TD>
      <TD vAlign=top width="39%">
        <P align=justify>CView::OnUpdate </P></TD></TR>
    <TR>
      <TD vAlign=top width="31%" rowSpan=2>
        <P align=justify>CFrameWnd或</P>
        <P align=justify>CMDIFrameWnd對象 </P></TD>
      <TD vAlign=top width="30%">
        <P align=justify>通知一個視為活動視 </P></TD>
      <TD vAlign=top width="39%">
        <P align=justify>CView::OnActivateView </P></TD></TR>
    <TR>
      <TD vAlign=top width="30%">
        <P align=justify>設置一個視為活動視 </P></TD>
      <TD vAlign=top width="39%">
        <P align=justify>SetActivateView </P></TD></TR></TBODY></TABLE>
  <P align=justify></P>
  <P 
  align=justify>可以通過表5-2得到相關對象,再調用表5-3中相應的函數。例如:視在接受了新數據或者數據被修改之后,使用表5-2中的函數GetDocument得到關聯文檔對象,然后調用表5-3中的文檔函數UpdateAllViews更新其他和文檔對象關聯的視。</P>
  <P 
  align=justify>在表5-2和表5-3中,CView對象指CView或派生類的實例;成員函數列中如果沒有指定類屬,就是第一列對象的類的成員函數。</P>
  <P align=justify></P>
  <LI><A name=_Toc445889039></A><A name=_Toc445782442></A><A 
  name=_Toc452640918></A><A name=_Toc457299001></A><B>MFC提供的接口</B> 
  <P></P>
  <P 
  align=justify>MFC編程就是把一些應用程序特有的東西填入MFC框架。MFC提供了兩種填入的方法:一種就是使用前一章論述的消息映射,消息映射給應用程序的各種對象處理各種消息的機會;另一種就是使用虛擬函數,MFC在實現許多功能或者處理消息、事件的過程中,調用了虛擬函數來完成一些任務,這樣就給了派生類覆蓋這些虛擬函數實現特定處理的機會。</P>
  <P 
  align=justify>下面兩節將列出兩類接口,有兩個目的:一是為了讓讀者獲得整體印象,二是后文將涉及到或者討論其中的許多函數時,不顯得突兀。</P>
  <OL>
    <P align=justify>
    <LI><A name=_Toc445889040></A><A name=_Toc445782443></A><A 
    name=_Toc452640919></A><A name=_Toc457299002></A><B>虛擬函數接口</B> 
    <P></P>
    <P 
    align=justify>幾乎每一個MFC類都定義和使用了虛擬成員函數,程序員可以在派生類中覆蓋它們。一般,MFC提供了這些函數的缺省實現,所以覆蓋函數應該調用基類的實現。這里給出一個MFC常用虛擬函數的總覽表(見表5-4),更詳細的信息或它們的缺省實現動作參見MFC文檔。由于基類的虛擬函數被派生類繼承,所以在派生類中不作重復說明。</P>
    <P 
    align=justify>覆蓋基類的虛擬函數可以通過ClassWizard進行,不過,并非所有的函數都可以這樣,有的必須手工加入函數聲明和實現。</P>
    <P align=center>表5-4 常見MFC類的虛擬函數接口</P>
    <TABLE cellSpacing=1 cellPadding=7 width=497 border=1>
      <TBODY>
      <TR>
        <TD vAlign=top width="23%">
          <P align=justify>類 </P></TD>
        <TD vAlign=top width="34%">
          <P align=justify>虛擬函數 </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>覆蓋的目的和功能 </P></TD></TR>
      <TR>
        <TD vAlign=top width="23%" rowSpan=2>
          <P align=justify>CCmdTarget </P></TD>
        <TD vAlign=top width="34%">
          <P align=justify>OnCmdMsg </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>發送、派發命令消息 </P></TD></TR>
      <TR>
        <TD vAlign=top width="34%">
          <P align=justify>OnFinalRelease </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>OLE用途,引用為0時作清理工作 </P></TD></TR>
      <TR>
        <TD vAlign=top width="23%" rowSpan=8>
          <P align=justify>CWinThread </P></TD>
        <TD vAlign=top width="34%">
          <P align=justify>ExitInstance </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>在線程退出時作清理工作 </P></TD></TR>
      <TR>
        <TD vAlign=top width="34%">
          <P align=justify>InitInstance </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>在線程開始時作初始化 </P></TD></TR>
      <TR>
        <TD vAlign=top width="34%">
          <P align=justify>OnIdle </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>執行thread-specific idle-time處理 </P></TD></TR>
      <TR>
        <TD vAlign=top width="34%">
          <P align=justify>PreTranslateMessage </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>在消息送給Windows函數TranslateMessage and 
          DispatchMessage.之前進行消息過濾 </P></TD></TR>
      <TR>
        <TD vAlign=top width="34%">
          <P align=justify>IsIdleMessage </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>檢查是否是某個特別的消息 </P></TD></TR>
      <TR>
        <TD vAlign=top width="34%">
          <P align=justify>ProcessWndProcException </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>截獲線程消息/命令處理中的例外 </P></TD></TR>
      <TR>
        <TD vAlign=top width="34%">
          <P align=justify>ProcessMessageFilter </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>線程消息過濾 </P></TD></TR>
      <TR>
        <TD vAlign=top width="34%">
          <P align=justify>Run </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>實現線程特定的消息循環 </P></TD></TR>
      <TR>
        <TD vAlign=top width="23%" rowSpan=2>
          <P align=justify>CWinApp </P></TD>
        <TD vAlign=top width="34%">
          <P align=justify>HideApplication </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>關閉所有的窗口之前隱藏應用程序 </P></TD></TR>
      <TR>
        <TD vAlign=top width="34%">
          <P align=justify>CloseAllDocument </P></TD>
        <TD vAlign=top width="44%">
          <P align=justify>退出程序之前關閉所有文檔 </P></TD></TR>
      <TR>
        <TD vAlign=top colSpan=3>
          <P align=justify>轉下頁 </P></TD></TR></TBODY></TABLE>
    <P align=justify></P>
    <P align=justify> </P>
    <TABLE cellSpacing=1 cellPadding=7 width=497 border=1>
      <TBODY>
      <TR>
        <TD vAlign=top colSpan=3>
          <P align=justify>續表 </P></TD></TR>
      <TR>
        <TD vAlign=top width="24%" rowSpan=5> </TD>
        <TD vAlign=top width="31%">
          <P align=justify>SaveModifiedDocument </P></TD>
        <TD vAlign=top width="45%">
          <P align=justify>框架窗口關閉時用來保存文檔 </P></TD></TR>
      <TR>
        <TD vAlign=top width="31%">

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品在线观看视频| 欧美日韩在线不卡| 色综合久久综合中文综合网| 51精品秘密在线观看| 国产精品成人免费| 韩国成人在线视频| 欧美妇女性影城| 亚洲欧美另类小说| 国产精品一区二区三区网站| 欧美日韩一二三区| 亚洲色图视频免费播放| 国产伦精品一区二区三区免费| 欧洲一区二区av| 国产精品国产三级国产有无不卡 | 高清不卡在线观看av| 欧美亚洲自拍偷拍| 自拍av一区二区三区| 欧洲精品一区二区| 国产精品剧情在线亚洲| 黄一区二区三区| 91麻豆精品久久久久蜜臀| 亚洲另类在线视频| 94色蜜桃网一区二区三区| 久久人人爽爽爽人久久久| 美女精品一区二区| 欧美精品一二三区| 午夜精品福利久久久| 色妹子一区二区| 自拍视频在线观看一区二区| 成人午夜私人影院| 国产精品国产三级国产普通话三级| 国产精品一二三区| 日本一区二区三区在线观看| 国产精品一区在线观看你懂的| 欧美成人性福生活免费看| 蜜臀精品一区二区三区在线观看| 欧美日韩黄视频| 日韩精品亚洲专区| 日韩欧美电影一二三| 男女性色大片免费观看一区二区| 欧美一区二区三区小说| 日韩电影在线免费| 欧美xxxxxxxx| 国产成人精品综合在线观看| 欧美国产国产综合| 一本一道久久a久久精品综合蜜臀| 国产精品久久夜| 一本久久精品一区二区| 亚洲午夜一二三区视频| 欧美日韩一区中文字幕| 蜜臀va亚洲va欧美va天堂| xfplay精品久久| 成人午夜在线视频| 亚洲一区二区五区| 日韩手机在线导航| 粉嫩aⅴ一区二区三区四区| 18成人在线观看| 欧美日韩亚洲综合在线 | 综合久久久久久| 日本韩国一区二区三区视频| 五月婷婷久久综合| 久久美女艺术照精彩视频福利播放 | 亚欧色一区w666天堂| 欧美一区二区三区影视| 国产盗摄一区二区| 一区二区视频在线看| 欧美一区二区三区的| 国产成人一区在线| 亚洲一区在线观看网站| 欧美va日韩va| 在线视频综合导航| 国模套图日韩精品一区二区| 亚洲欧美二区三区| 日韩视频永久免费| 91国产视频在线观看| 狂野欧美性猛交blacked| 最好看的中文字幕久久| 日韩欧美在线网站| 日本高清不卡在线观看| 国产最新精品精品你懂的| 伊人一区二区三区| 国产婷婷一区二区| 欧美日本视频在线| 91视频.com| 国产精品一二三| 蜜臀精品一区二区三区在线观看| 亚洲黄色性网站| 国产日韩欧美精品一区| 欧美一区二区国产| 欧洲色大大久久| 成人福利视频网站| 国产麻豆午夜三级精品| 日韩成人精品在线| 亚洲国产精品精华液网站| 国产亚洲欧美激情| 2023国产精品| 欧美一区三区二区| 欧美久久久久久久久久| 一本大道久久a久久精品综合| 国产精品一区二区无线| 精品影视av免费| 免费精品视频在线| 亚洲成人动漫在线免费观看| 亚洲卡通欧美制服中文| 国产精品国产三级国产普通话三级| 精品成人a区在线观看| 日韩一区二区三区在线观看| 91精品国产综合久久久久久漫画| 日本久久一区二区三区| 色婷婷久久久综合中文字幕| 不卡电影一区二区三区| 成人手机电影网| 国产麻豆日韩欧美久久| 国产精品18久久久久久vr| 国产一区二区导航在线播放| 卡一卡二国产精品 | 婷婷激情综合网| 一区二区久久久久久| 亚洲激情五月婷婷| 亚洲一二三专区| 亚洲成人激情av| 日韩精品久久理论片| 免费看日韩a级影片| 狠狠色伊人亚洲综合成人| 日本视频一区二区三区| 五月天欧美精品| 男女视频一区二区| 国产一区二区在线免费观看| 丁香亚洲综合激情啪啪综合| 成人午夜激情影院| 91久久线看在观草草青青| 欧美午夜寂寞影院| 欧美一级高清片在线观看| 精品福利二区三区| 中文字幕精品一区二区三区精品| 成人欧美一区二区三区白人| 综合久久综合久久| 日韩福利视频导航| 久久电影网电视剧免费观看| 国产高清精品网站| 一本色道久久综合精品竹菊| 欧美日韩一区二区三区在线| 日韩欧美成人一区| 欧美激情综合网| 亚洲在线观看免费视频| 日本午夜精品一区二区三区电影| 极品少妇xxxx精品少妇偷拍| 成人久久视频在线观看| 欧美色图免费看| 久久婷婷国产综合国色天香| 亚洲三级理论片| 美女一区二区三区在线观看| 不卡一区二区中文字幕| 欧美精品第1页| 国产三级精品视频| 亚洲福利一区二区三区| 国产成人自拍在线| 欧美中文字幕一二三区视频| 精品不卡在线视频| 天堂一区二区在线免费观看| 国产激情视频一区二区三区欧美| 日本道色综合久久| 国产午夜亚洲精品午夜鲁丝片| 亚洲一区在线看| 国产成人精品免费视频网站| 欧美日韩国产首页| 中文字幕一区二区三区四区| 美女一区二区三区| 欧美自拍丝袜亚洲| 中文一区二区在线观看| 免费人成网站在线观看欧美高清| 成人福利视频在线看| 欧美成人官网二区| 午夜不卡在线视频| 欧美亚洲综合在线| 亚洲情趣在线观看| 风流少妇一区二区| 日韩欧美中文字幕制服| 一区二区欧美视频| 成人福利电影精品一区二区在线观看 | 另类调教123区| 欧美日韩精品欧美日韩精品一综合| 国产精品网站在线播放| 国产一区中文字幕| 日韩一区二区三区在线视频| 午夜精品福利一区二区蜜股av| 色婷婷综合久久久| 国产精品高潮呻吟| 成人理论电影网| 亚洲国产精品成人久久综合一区 | 99久久精品免费观看| 精品久久久网站| 久久99久久久久| 欧美一级高清片| 久久国产福利国产秒拍| 7777精品伊人久久久大香线蕉经典版下载| 中文字幕中文在线不卡住| 成人av免费在线| 国产精品久久免费看| 成人福利视频在线|