程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 學習MFC深入詳解_李久進——Demo1

學習MFC深入詳解_李久進——Demo1

編輯:關於C

 

MFC的宏觀框架體系:

       MFC是C++類庫,程序員就是通過使用、繼承和擴展適當的類來實現特定的目的。

CWinApp->CTapp , CDocument->CTDoc, CView->CTView, CMDIFrameWnd->CMainFrame,CMDIChildWnd->CChildFrame

應用程序對象,文檔對象,視對象,主框架窗口對象(視窗口,工具條和狀態欄)和文檔邊框窗口對象。

     文件預編譯將Project中使用的一些MFC標准頭文件預先編譯,以後不再編譯該部分頭文件,直接使用預編譯的結果。預編譯頭文件通過編譯stdafx.cpp生成,以工程名命名。

      編譯器認為,所以在指令#include "stdafx.h"前的代碼都是預編譯的,它跳過#include "stdafx.h"指令,使用projectname.pch編譯這條指令之後的所有代碼。

MFC Object 和Windows Object的區別:

數據結構:

      MFC Object是相應C++類的實例(是MFC或程序員定義);Windows Object 是Windows系統的內部結構,通過一個句柄來引用;

MFC給類定義了一個成員變量來保存MFC Object對應的Windows Object的句柄。

層次:

      MFC Object是高層的,Windows Object是低層的;MFC Object封裝了Windows Object的大部分或全部功能,MFC Object的使用者不需要直接應用Windows Object的HANDLE使用Win32 API,代替它的是引用相應的MFC Object的成員函數。

創建:

     MFC Object通過構造函數由程序直接創建;Windows Object由相應的SDK函數創建。

首先創建MFC Object,或在STACK中創建,或在HEAP中創建,MFC Object的句柄實例變量為空,或不是一個有效的句柄。然後調用MFC Object的成員函數創建相應的Windows Object,MFC的句柄變量存儲一個有效句柄。

轉換:

使用范圍:

MFC Object對系統的其他進程來說是不可見、不可用的;而Windows Object一旦創建,其句柄是整個Windows系統全局的。典型:一個進程可以獲得另一個進程的窗口句柄,並給該窗口發送消息。對同一個進程的線程來說,只可以使用本線程創建的MFC Object,不能使用其他線程的MFC Object。

銷毀:

MFC Object隨著析構函數的調用而消失;但Windows Object必須由相應的Windows系統函數銷毀。設備描述表CDC類的對象有所不同,其對應的HDC句柄對象可能不是被銷毀,而是被釋放。

 

Windows Object

用SDK的Win32 API編寫Windows應用程序的共同規律:

編寫WinMain函數——編寫處理消息和事件的窗口過程WndProc,在WinMain裡頭注冊窗口(Register Window),創建窗口,然後開始應用程序的消息循環

 

摘自:landy_mo的專欄

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved