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

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

?? mfc教程_ mfc和win32.htm

?? MFC (Microsoft Foundation Class Library)中的各種類結合起來構成了一個應用程序框架
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0041)http://www.vczx.com/tutorial/mfc/mfc2.php -->
<HTML><HEAD><TITLE>MFC教程_ MFC和Win32</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2900.3354" name=GENERATOR></HEAD>
<BODY bgColor=#ffffff>
<OL start=2>
  <P align=justify>
  <LI><A name=_Toc445888977></A><A name=_Toc445782380></A><A 
  name=_Toc452640876></A><A name=_Toc457298941></A><B>MFC和Win32</B> 
  <P></P>
  <OL>
    <P align=justify>
    <LI><B><A name=_Toc445888978></A><A name=_Toc445782381></A><A 
    name=_Toc452640877></A><A name=_Toc457298942></A>MFC Object和Windows 
    Object的關系</B> 
    <P></P></LI></OL></LI></OL>
<P align=justify>MFC中最重要的封裝是對Win32 API的封裝,因此,理解Windows Object和MFC Object 
(C++對象,一個C++類的實例)之間的關系是理解MFC的關鍵之一。所謂Windows 
Object(Windows對象)是Win32下用句柄表示的Windows操作系統對象;所謂MFC Object 
(MFC對象)是C++對象,是一個C++類的實例,這里(本書范圍內)MFC Object是有特定含義的,指封裝Windows Object的C++ 
Object,并非指任意的C++ Object。</P>
<P align=justify>MFC Object 和Windows Object是不一樣的,但兩者緊密聯系。以窗口對象為例:</P><IMG 
height=198 hspace=12 src="MFC教程_ MFC和Win32.files/image106.gif" width=385 
align=left> 
<P align=justify>一個MFC窗口對象是一個C++ 
CWnd類(或派生類)的實例,是程序直接創建的。在程序執行中它隨著窗口類構造函數的調用而生成,隨著析構函數的調用而消失。而Windows窗口則是Windows系統的一個內部數據結構的實例,由一個“窗口句柄”標識,Windows系統創建它并給它分配系統資源。Windows窗口在MFC窗口對象創建之后,由CWnd類的Create成員函數創建,“窗口句柄”保存在窗口對象的m_hWnd成員變量中。Windows窗口可以被一個程序銷毀,也可以被用戶的動作銷毀。MFC窗口對象和Windows窗口對象的關系如圖2-1所示。其他的Windows 
Object和對應的MFC Object也有類似的關系。</P>
<P align=justify></P>
<P align=justify>下面,對MFC Object和Windows 
Object作一個比較。有些論斷對設備描述表(MFC類是CDC,句柄是HDC)可能不適用,但具體涉及到時會指出。</P>
<OL>
  <P align=justify>
  <LI>從數據結構上比較 
  <P></P>
  <P align=justify>MFC Object是相應C++類的實例,這些類是MFC或者程序員定義的;</P>
  <P align=justify>Windows Object是Windows系統的內部結構,通過一個句柄來引用;</P>
  <P align=justify>MFC給這些類定義了一個成員變量來保存MFC Object對應的Windows 
  Object的句柄。對于設備描述表CDC類,將保存兩個HDC句柄。</P>
  <P align=justify></P>
  <LI>從層次上講比較 
  <P></P>
  <P align=justify>MFC Object是高層的,Windows Object是低層的;</P>
  <P align=justify>MFC Object封裝了Windows Object的大部分或全部功能,MFC 
  Object的使用者不需要直接應用Windows Object的HANDLE(句柄)使用Win32 API,代替它的是引用相應的MFC 
  Object的成員函數。</P>
  <P align=justify></P>
  <LI>從創建上比較 
  <P></P>
  <P align=justify>MFC Object通過構造函數由程序直接創建;Windows Object由相應的SDK函數創建。</P>
  <P align=justify>MFC中,使用這些MFC Object,一般分兩步:</P>
  <P align=justify>首先,創建一個MFC Object,或者在STACK中創建,或者在HEAP中創建,這時,MFC 
  Object的句柄實例變量為空,或者說不是一個有效的句柄。</P>
  <P align=justify>然后,調用MFC Object的成員函數創建相應的Windows Object,MFC的句柄變量存儲一個有效句柄。</P>
  <P align=justify>CDC(設備描述表類)的創建有所不同,在后面的2.3節會具體說明CDC及其派生類的創建和使用。</P>
  <P align=justify>當然,可以在MFC 
  Object的構造函數中創建相應的Windows對象,MFC的GDI類就是如此實現的,但從實質上講,MFC Object的創建和Windows 
  Object的創建是兩回事。</P>
  <P align=justify></P>
  <LI>從轉換上比較 
  <P></P>
  <P align=justify>可以從一個MFC Object得到對應的Windows Object的句柄;一般使用MFC 
  Object的成員函數GetSafeHandle得到對應的句柄。</P>
  <P align=justify>可以從一個已存在的Windows Object創建一個對應的MFC Object; 一般使用MFC 
  Object的成員函數Attach或者FromHandle來創建,前者得到一個永久性對象,后者得到的可能是一個臨時對象。</P>
  <P align=justify></P>
  <LI>從使用范圍上比較 
  <P></P>
  <P align=justify>MFC Object對系統的其他進程來說是不可見、不可用的;而Windows 
  Object一旦創建,其句柄是整個Windows系統全局的。一些句柄可以被其他進程使用。典型地,一個進程可以獲得另一進程的窗口句柄,并給該窗口發送消息。</P>
  <P align=justify>對同一個進程的線程來說,只可以使用本線程創建的MFC Object,不能使用其他線程的MFC Object。</P>
  <P align=justify></P>
  <LI>從銷毀上比較 
  <P></P></LI></OL>
<P align=justify>MFC Object隨著析構函數的調用而消失;但Windows Object必須由相應的Windows系統函數銷毀。</P>
<P align=justify>設備描述表CDC類的對象有所不同,它對應的HDC句柄對象可能不是被銷毀,而是被釋放。</P>
<P align=justify>當然,可以在MFC Object的析構函數中完成Windows Object的銷毀,MFC 
Object的GDI類等就是如此實現的,但是,應該看到:兩者的銷毀是不同的。</P>
<P align=justify>每類Windows Object都有對應的MFC 
Object,下面用表格的形式列出它們之間的對應關系,如表2-1所示:</P>
<P align=center>表2-1 MFC Object和Windows Object的對應關系</P>
<P align=left>
<TABLE cellSpacing=1 cellPadding=7 width=480 border=1>
  <TBODY>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>描述 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>Windows句柄 </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>MFC Object </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>窗口 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HWND </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CWnd and CWnd-derived classes </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>設備上下文 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HDC </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CDC and CDC-derived classes </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>菜單 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HMENU </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CMenu </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>筆 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HPEN </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CGdiObject類,CPen和CPen-derived classes </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>刷子 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HBRUSH </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CGdiObject類,CBrush和CBrush-derived classes </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>字體 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HFONT </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CGdiObject類,CFont和CFont-derived classes </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>位圖 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HBITMAP </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CGdiObject類,CBitmap和CBitmap-derived classes </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>調色板 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HPALETTE </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CGdiObject類,CPalette和CPalette-derived classes </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>區域 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HRGN </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CGdiObject類,CRgn和CRgn-derived classes </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>圖像列表 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>HimageLIST </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CimageList和CimageList-derived classes </P></TD></TR>
  <TR>
    <TD vAlign=top width="18%">
      <P align=justify>套接字 </P></TD>
    <TD vAlign=top width="22%">
      <P align=justify>SOCKET </P></TD>
    <TD vAlign=top width="60%">
      <P align=justify>CSocket,CAsynSocket及其派生類 </P></TD></TR></TBODY></TABLE>
<P></P>
<P align=justify></P>
<P align=justify> </P>
<P align=justify>
<HR width="0%" SIZE=1>
表2-1中的OBJECT分以下幾類: 
<P></P>
<P align=justify>Windows對象,</P>
<P align=justify>設備上下文對象,</P>
<P align=justify>GDI對象(BITMAP,BRUSH,FONT,PALETTE,PEN,RGN),</P>
<P align=justify>菜單,</P>
<P align=justify>圖像列表,</P>
<P align=justify>網絡套接字接口。</P>
<P align=justify>從廣義上來看,文檔對象和文件可以看作一對MFC Object和Windows 
Object,分別用CDocument類和文件句柄描述。</P>
<P align=justify>后續幾節分別對前四類作一個簡明扼要的論述。</P>
<OL>
  <OL>
    <P align=justify>
    <LI><A name=_Toc445888979></A><A name=_Toc445782382></A><A 
    name=_Toc452640878></A><A name=_Toc457298943></A><B>Windows Object</B> 
    <P></P>
    <P align=justify>用SDK的Win32 
    API編寫各種Windows應用程序,有其共同的規律:首先是編寫WinMain函數,編寫處理消息和事件的窗口過程WndProc,在WinMain里頭注冊窗口(Register 
    Window),創建窗口,然后開始應用程序的消息循環。</P>
    <P align=justify>MFC應用程序也不例外,因為MFC是一個建立在SDK 
    API基礎上的編程框架。對程序員來說所不同的是:一般情況下,MFC框架自動完成了Windows登記、創建等工作。</P>
    <P align=justify>下面,簡要介紹MFC Window對Windows Window的封裝。</P>
    <OL>
      <P align=justify>
      <LI><A name=_Toc445888980></A><A name=_Toc445782383></A><A 
      name=_Toc452640879></A><A name=_Toc457298944></A><B>Windows的注冊</B> 
      <P></P></LI></OL></LI></OL></OL>
<P align=justify>一個應用程序在創建某個類型的窗口前,必須首先注冊該“窗口類”(Windows 
Class)。注意,這里不是C++類的類。Register Window把窗口過程、窗口類型以及其他類型信息和要登記的窗口類關聯起來。</P>
<OL>
  <P align=justify>
  <LI>“窗口類”的數據結構 
  <P></P>
  <P 
  align=justify>“窗口類”是Windows系統的數據結構,可以把它理解為Windows系統的類型定義,而Windows窗口則是相應“窗口類”的實例。Windows使用一個結構來描述“窗口類”,其定義如下:</P>
  <P align=justify>typedef struct _WNDCLASSEX { </P>
  <P align=justify>UINT cbSize; //該結構的字節數</P>
  <P align=justify>UINT style; //窗口類的風格</P>
  <P align=justify>WNDPROC lpfnWndProc; //窗口過程</P>
  <P align=justify>int cbClsExtra; </P>
  <P align=justify>int cbWndExtra; </P>
  <P align=justify>HANDLE hInstance; //該窗口類的窗口過程所屬的應用實例</P>
  <P align=justify>HICON hIcon; //該窗口類所用的像標</P>
  <P align=justify>HCURSOR hCursor; //該窗口類所用的光標</P>
  <P align=justify>HBRUSH hbrBackground; //該窗口類所用的背景刷</P>
  <P align=justify>LPCTSTR lpszMenuName; //該窗口類所用的菜單資源</P>
  <P align=justify>LPCTSTR lpszClassName; //該窗口類的名稱</P>
  <P align=justify>HICON hIconSm; //該窗口類所用的小像標</P>
  <P align=justify>} WNDCLASSEX; </P>
  <P 
  align=justify>從“窗口類”的定義可以看出,它包含了一個窗口的重要信息,如窗口風格、窗口過程、顯示和繪制窗口所需要的信息,等等。關于窗口過程,將在后面消息映射等有關章節作詳細論述。</P>
  <P 
  align=justify>Windows系統在初始化時,會注冊(Register)一些全局的“窗口類”,例如通用控制窗口類。應用程序在創建自己的窗口時,首先必須注冊自己的窗口類。在MFC環境下,有幾種方法可以用來注冊“窗口類”,下面分別予以討論。</P>
  <P align=justify></P>
  <LI>調用AfxRegisterClass注冊 
  <P></P>
  <P align=justify>AfxRegisterClass函數是MFC全局函數。AfxRegisterClass的函數原型:</P>
  <P align=justify>BOOL AFXAPI AfxRegisterClass(WNDCLASS *lpWndClass);</P>
  <P align=justify>參數lpWndClass是指向WNDCLASS結構的指針,表示一個“窗口類”。</P>
  <P 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
9191久久久久久久久久久| 国产+成+人+亚洲欧洲自线| 亚洲3atv精品一区二区三区| 最新日韩av在线| 亚洲欧美另类小说| 亚洲精品综合在线| 奇米影视在线99精品| 成人夜色视频网站在线观看| 日本韩国精品在线| 日韩欧美一区二区不卡| 国产精品网站在线播放| 亚洲一区二区3| 成人永久免费视频| 欧美精品视频www在线观看| 久久只精品国产| 视频一区欧美日韩| av不卡在线观看| 欧美videos中文字幕| 亚洲三级电影全部在线观看高清| 日日摸夜夜添夜夜添国产精品| 成+人+亚洲+综合天堂| 欧美白人最猛性xxxxx69交| 亚洲欧洲综合另类| 激情久久久久久久久久久久久久久久| 成人av电影在线网| 久久精品免视看| 美国三级日本三级久久99| 欧美午夜免费电影| 亚洲欧洲制服丝袜| 91亚洲精品久久久蜜桃网站| 国产午夜精品久久久久久免费视| 日韩**一区毛片| 欧美精品tushy高清| 亚洲一区影音先锋| 欧美一a一片一级一片| 亚洲国产精品影院| 欧美精品乱码久久久久久按摩| 一区二区三区视频在线看| 99热精品一区二区| 亚洲激情av在线| 欧美丰满少妇xxxxx高潮对白| 亚洲成人在线免费| 精品成人在线观看| 国产成人精品影院| 亚洲男人电影天堂| 欧美日韩成人在线| 国内精品免费在线观看| 日韩久久一区二区| 欧美视频在线观看一区二区| 日韩—二三区免费观看av| 国产精品污www在线观看| 欧洲日韩一区二区三区| 日韩中文字幕av电影| 国产亚洲1区2区3区| 91蜜桃婷婷狠狠久久综合9色| 香蕉乱码成人久久天堂爱免费| 精品久久久久久久久久久久包黑料 | 亚洲丶国产丶欧美一区二区三区| 91浏览器打开| 久久精品噜噜噜成人88aⅴ| 亚洲欧美韩国综合色| 欧美mv日韩mv| 欧美嫩在线观看| 欧美在线999| 成人美女视频在线看| 美国欧美日韩国产在线播放| 洋洋av久久久久久久一区| 国产日韩精品一区二区三区| 777xxx欧美| 色婷婷综合久色| 99久久精品国产导航| 成熟亚洲日本毛茸茸凸凹| 蜜臀a∨国产成人精品| 亚洲自拍偷拍九九九| 亚洲天堂a在线| 一区二区三区**美女毛片| 亚洲美女精品一区| 亚洲欧美aⅴ...| 18成人在线观看| 亚洲欧洲中文日韩久久av乱码| 亚洲视频在线一区观看| 中文字幕一区二区不卡| 一区视频在线播放| 亚洲天堂久久久久久久| 亚洲青青青在线视频| 亚洲制服丝袜在线| 天天射综合影视| 免费在线看成人av| 极品尤物av久久免费看| 国产91丝袜在线播放0| www.综合网.com| 在线看日本不卡| 欧美一区二区性放荡片| www久久精品| 亚洲精品久久久久久国产精华液| 亚洲妇熟xx妇色黄| 精品一二线国产| 欧洲精品一区二区三区在线观看| 在线成人高清不卡| 国产欧美精品一区aⅴ影院| 一区二区三区自拍| 美女性感视频久久| 欧美高清性hdvideosex| 久久久久久久综合色一本| 亚洲mv大片欧洲mv大片精品| 成人午夜免费av| 日韩你懂的在线观看| 亚洲激情综合网| 国产成人免费9x9x人网站视频| 欧美日韩国产首页在线观看| 自拍偷拍亚洲激情| 国产a视频精品免费观看| 欧美一区二区三区在| 亚洲国产精品一区二区www在线 | 欧美一区二区三区日韩| 亚洲欧美日韩中文播放| 丁香婷婷综合激情五月色| 欧美一区二区精品在线| 午夜免费欧美电影| 91久久精品网| 亚洲三级电影网站| 国产99久久久国产精品 | 一区二区国产盗摄色噜噜| 福利一区福利二区| 国产清纯白嫩初高生在线观看91| 免费在线观看日韩欧美| 欧美一区二区视频网站| 麻豆视频观看网址久久| 日韩一级片网址| 午夜精品一区二区三区电影天堂| 在线观看国产日韩| 亚洲福利视频一区二区| 337p亚洲精品色噜噜| 六月丁香婷婷色狠狠久久| 欧美成人一区二区| 成人精品视频一区二区三区尤物| 中文字幕va一区二区三区| av亚洲精华国产精华精华| 樱桃视频在线观看一区| 欧美高清视频不卡网| 国产一区二区免费在线| 国产精品国产自产拍高清av王其| 在线欧美一区二区| 精品一区二区三区视频| 国产精品白丝在线| 欧美亚洲免费在线一区| 日韩不卡免费视频| 日韩一区日韩二区| 欧美一激情一区二区三区| 成人综合在线网站| 青青草一区二区三区| 亚洲欧洲日韩女同| 欧美成人激情免费网| 这里只有精品免费| 韩国一区二区在线观看| 亚洲免费观看高清完整版在线观看| 国产精品不卡视频| 中文一区二区在线观看| 国产精品伦一区二区三级视频| 欧美丰满少妇xxxbbb| 欧美日韩一区二区三区在线| 91小视频在线免费看| 91麻豆精东视频| 成人av免费网站| 国产精品一区二区在线观看不卡| 婷婷中文字幕一区三区| 午夜精品一区二区三区电影天堂| 亚洲国产精品久久艾草纯爱 | 一本高清dvd不卡在线观看| 成a人片亚洲日本久久| 91国偷自产一区二区三区成为亚洲经典| 成人综合婷婷国产精品久久免费| 成人免费观看男女羞羞视频| 国产91丝袜在线18| 日本精品裸体写真集在线观看 | 国产毛片精品视频| 成人视屏免费看| 久久精品国产77777蜜臀| 日韩国产一区二| 岛国精品一区二区| 欧美日韩dvd在线观看| 国产精品污污网站在线观看| 五月天激情小说综合| 日韩在线卡一卡二| 久久精品久久综合| 欧美影院一区二区三区| 在线电影一区二区三区| 国产午夜精品久久久久久免费视| 亚洲色图在线看| 美女mm1313爽爽久久久蜜臀| 精品成人免费观看| 精品国产一区二区三区久久影院| 欧美激情一区二区三区在线| 亚洲国产成人精品视频| 国产精品1区二区.| 在线成人高清不卡| 中文字幕亚洲欧美在线不卡| 精品在线观看视频| 538prom精品视频线放| 亚洲美女免费视频|