亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩视频中午一区| 免费av成人在线| 精品人在线二区三区| 欧美视频一区二| 色综合久久88色综合天天| av不卡在线观看| 91视频.com| 欧美在线免费观看视频| 欧美私人免费视频| 欧美精品久久99| 精品久久久久99| 国产亚洲精品中文字幕| 中文字幕av一区二区三区免费看 | 在线精品国精品国产尤物884a| 成人激情免费电影网址| 99久精品国产| 欧美精品在线一区二区三区| 在线播放一区二区三区| 精品久久久久久久久久久久久久久久久 | 秋霞电影网一区二区| 久久精品72免费观看| 国产成人日日夜夜| 99精品1区2区| 在线播放视频一区| 久久久久国产精品麻豆ai换脸| 国产精品免费久久| 亚洲制服丝袜在线| 久久电影网电视剧免费观看| 国产91在线观看丝袜| 色综合一区二区三区| 日韩欧美美女一区二区三区| 国产清纯白嫩初高生在线观看91 | 久久久一区二区三区捆绑**| 日韩伦理av电影| 日韩高清一区在线| 国产精品资源站在线| 在线观看亚洲专区| 精品国产一区二区三区久久久蜜月 | 色综合欧美在线| 欧美一区二区三区成人| 中文字幕精品综合| 日韩不卡在线观看日韩不卡视频| 国产麻豆视频精品| 欧美日韩高清一区| 中文字幕中文乱码欧美一区二区| 日韩黄色片在线观看| 91网上在线视频| 亚洲精品在线免费观看视频| 亚洲自拍另类综合| 国产suv精品一区二区883| 欧美二区在线观看| 亚洲视频小说图片| 国产不卡一区视频| 日韩精品一区国产麻豆| 亚洲国产wwwccc36天堂| 91污片在线观看| 亚洲国产精品精华液ab| 久久精品免费看| 欧美亚洲图片小说| 亚洲日本va在线观看| 国产一区 二区 三区一级| 91精品中文字幕一区二区三区| 日韩美女视频一区二区| www.日韩av| 中文字幕欧美激情| 国产激情偷乱视频一区二区三区| 欧美一区二区三区系列电影| 亚洲6080在线| 在线观看精品一区| 亚洲精品高清视频在线观看| av成人免费在线观看| 国产精品欧美一级免费| 国产成人精品影视| 国产欧美一区二区精品秋霞影院| 精品一区在线看| 精品国产91久久久久久久妲己 | 久久精品夜色噜噜亚洲a∨| 免费看欧美美女黄的网站| 欧美日本国产一区| 日韩av一二三| 精品国产乱码久久久久久夜甘婷婷| 美女免费视频一区二区| 精品成a人在线观看| 国产乱妇无码大片在线观看| 精品99久久久久久| 粉嫩绯色av一区二区在线观看 | 在线国产电影不卡| 亚洲高清视频在线| 在线成人小视频| 久久国内精品自在自线400部| 欧美一区二区三区爱爱| 狠狠色综合播放一区二区| 国产亚洲欧美激情| 91美女片黄在线观看91美女| 一区二区三区在线播| 欧美高清精品3d| 国产综合成人久久大片91| 国产片一区二区三区| 97久久久精品综合88久久| 一区二区三区四区蜜桃| 日韩一区二区影院| 国产激情精品久久久第一区二区 | 日韩欧美成人一区二区| 韩国v欧美v日本v亚洲v| 中文乱码免费一区二区| 欧美系列亚洲系列| 麻豆一区二区三| 中文字幕亚洲成人| 日韩三级视频在线观看| 99久久99久久久精品齐齐| 亚洲综合无码一区二区| 精品少妇一区二区三区免费观看 | 国产一区二区在线影院| 日韩理论片网站| 欧美成人video| 99精品视频在线免费观看| 午夜久久久久久电影| 国产丝袜美腿一区二区三区| 欧美三级在线播放| 国产成a人亚洲精| 日韩中文字幕一区二区三区| 中国色在线观看另类| 91精品在线一区二区| 99热99精品| 国产美女视频91| 日韩高清在线一区| 国产精品成人免费在线| 26uuu精品一区二区三区四区在线| 色综合av在线| 成人小视频在线观看| 日本欧美一区二区在线观看| 中文字幕欧美一| 国产亚洲欧美一区在线观看| 日韩一区二区三区精品视频| 色噜噜狠狠色综合欧洲selulu| 国产一区二区福利视频| 日韩电影一区二区三区| 伊人开心综合网| 国产精品久久久久久久久晋中| 欧美成人精品1314www| 欧美高清视频www夜色资源网| 欧洲激情一区二区| gogogo免费视频观看亚洲一| 国产乱码精品1区2区3区| 久久精品国产亚洲一区二区三区| 亚洲va国产va欧美va观看| 亚洲免费在线视频| 亚洲精品自拍动漫在线| 国产精品不卡在线观看| 中文字幕一区二区三区乱码在线| 久久精品一区蜜桃臀影院| 亚洲精品在线免费播放| 欧美成人bangbros| 欧美精品一区二区三区高清aⅴ | 国产网站一区二区三区| 久久久影院官网| 久久精品视频在线免费观看 | 91久久免费观看| 91激情五月电影| 欧美日韩一区不卡| 91精品国产色综合久久久蜜香臀| 91精品国产色综合久久不卡蜜臀 | 国产精品一线二线三线| 国产综合色产在线精品| 丁香天五香天堂综合| av亚洲精华国产精华| 91亚洲国产成人精品一区二三| 99久久国产综合精品女不卡| 日本久久电影网| 欧美一区三区二区| 久久久久国产精品厨房| 国产精品久久久久毛片软件| 亚洲另类色综合网站| 日日摸夜夜添夜夜添精品视频| 久久66热偷产精品| 99这里只有久久精品视频| 在线观看av一区二区| 日韩欧美在线一区二区三区| 久久人人97超碰com| 亚洲另类一区二区| 男男gaygay亚洲| 99久久精品国产一区| 欧美亚洲尤物久久| 国产亚洲一区二区在线观看| 亚洲视频一区二区在线| 日韩精品每日更新| 东方欧美亚洲色图在线| 欧美体内she精视频| 久久亚洲二区三区| 亚洲国产另类av| 国产成人亚洲精品青草天美| 在线观看三级视频欧美| 26uuu欧美日本| 亚洲一区二区三区免费视频| 国产91在线|亚洲| 91精品黄色片免费大全| 中文字幕亚洲成人| 国产在线精品一区二区三区不卡| 日本久久电影网| 国产欧美日韩另类一区|