MFC學習內容簡介!

教程列表:MFC教程(1)--MFC概述

  MFC是一個編程框架

  MFC (Microsoft Foundation Class Library)中的各種類結合起來構成了一個應用程序框架,它的目的就是讓程序員在此基礎上來建立Windows下的應用程序,這是一種相對SDK來說更爲簡單的方法。因爲總體上,MFC框架定義了應用程序的輪廓,並提供了用戶接口的標準實現方法,程序員所要做的就是通過預定義的接口把具體應用程序特有的東西填入這個輪廓。Microsoft Visual C++提供了相應的工具來完成這...

http://tech.ddvip.com/2007-03/117415707121625.htmlMFC教程(2)-- MFC和Win32

  MFC Object和Windows Object的關係

  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++ Obje...

http://tech.ddvip.com/2007-03/117415714821626.htmlMFC教程(3)-- CObject類

  CObject是大多數MFC類的根類或基類。CObject類有很多有用的特性:對運行時類信息的支持,對動態創建的支持,對串行化的支持,對象診斷輸出,等等。MFC從CObject派生出許多類,具備其中的一個或者多個特性。程序員也可以從CObject類派生出自己的類,利用CObject類的這些特性。

  本章將討論MFC如何設計CObject類的這些特性。首先,考察CObject類的定義,分析其結構和方法(成員變量和成員函數)對CObjec...

http://tech.ddvip.com/2007-03/117415721521627.htmlMFC教程(4)-- 消息映射的實現(1)

  消息映射的實現

  Windows消息概述

  Windows應用程序的輸入由Windows系統以消息的形式發送給應用程序的窗口。這些窗口通過窗口過程來接收和處理消息,然後把控制返還給Windows。

  消息的分類

  隊列消息和非隊列消息

  從消息的發送途徑上看,消息分兩種:隊列消息和非隊列消息。隊列消息送到系統消息隊列,然後到線程消息隊列;非隊列消息直接送給目的窗口過程。

  ...

http://tech.ddvip.com/2007-03/117415733421628.htmlMFC教程(4)-- 消息映射的實現(2)

  但是在當前例子中,當前對象的類CTview沒有覆蓋該函數,所以CWnd的WindowProc被調用。

  這個函數把下一步的工作交給OnWndMsg函數來處理。如果OnWndMsg沒有處理,則交給DefWindowProc來處理。

  OnWndMsg和DefWindowProc都是CWnd類的虛擬函數。

  OnWndMsg的原型如下:

  BOOL CWnd::OnWndMsg( UINT message,

  WPARAM wParam, LPARAM lParam,RESULT*pResult );

  ...

http://tech.ddvip.com/2007-03/117415736721629.htmlMFC教程(5)-- MFC對象的創建(1)MFC對象的創建

  前面幾章介紹了MFC的核心概念和思想,即介紹了MFC對Windows對象的封裝方法和特點;MFC對象的動態創建、序列化;MFC消息映射機制。

  現在,考查MFC的應用程序結構體系,即以文檔-視爲核心的編程模式。學習本章,應該弄清楚以下問題:

  MFC中諸多MFC對象的關係:應用程序對象,文檔對象,邊框窗口對象,文檔邊框窗口對象,視對象,文檔模板對象等。

  MFC對象的創建和...

http://tech.ddvip.com/2007-03/117415776621630.htmlMFC教程(5)-- MFC對象的創建(2)

  從這些圖中可以看到何時、何處調用了什麼消息處理函數和虛擬函數,這些函數用來作了什麼事情。必要的話,程序員可以在派生類覆蓋它們。

  在創建工作完成之後,進行初始化,使用文檔對象的數據來更新視和顯示窗口。

  至此,本節描述了MFC的SDI程序從分析命令行到創建或打開文件的處理過程,文檔對象已經動態創建。總結如下:

  命令行分析→應用程序的FileNew→文檔模板的OpenDocu...

http://tech.ddvip.com/2007-03/117415781021631.htmlMFC教程(6)-- 應用程序的退出

  一個Windows應用程序啓動之後,一般是進入消息循環,等待或者處理用戶的輸入,直到用戶關閉應用程序窗口,退出應用程序爲止。

  例如,用戶按主窗口的關閉按鈕,或者選擇執行系統菜單“關閉”,或者從“文件”菜單選擇執行“退出”,都會導致主窗口被關閉。

  當用戶從“文件”菜單選擇執行“退出”時,將發送MFC標準命令消息ID_APP_EXI...

http://tech.ddvip.com/2007-03/117415785621632.htmlMFC教程(7)-- MFC的DLL

  一般的,在介紹Windows編程的書中講述DLL的有關知識較多,而介紹MFC的書則比較少地提到。即使使用MFC來編寫動態鏈接庫,對於初步接觸DLL的程序員來說,瞭解DLL的背景知識是必要的。另外,MFC提供了新的手段來幫助編寫DLL程序。所以,本節先簡潔的介紹有關概念。

  DLL的背景知識

  靜態鏈接和動態鏈接

  當前鏈接的目標代碼(.obj)如果引用了一個函數卻沒有定義它,鏈接程序可能通過兩...

http://tech.ddvip.com/2007-03/117415789521633.htmlMFC教程(8)-- MFC的進程和線程

  Win32的進程和線程概念

  進程是一個可執行的程序,由私有虛擬地址空間、代碼、數據和其他操作系統資源(如進程創建的文件、管道、同步對象等)組成。一個應用程序可以有一個或多個進程,一個進程可以有一個或多個線程,其中一個是主線程。

  線程是操作系統分時調度分配CPU時間的基本實體。一個線程可以執行程序的任意部分的代碼,即使這部分代碼被另一個線程併發地執行;一個進程的所有線程共享它的...

http://tech.ddvip.com/2007-03/117415794021634.htmlMFC教程(9)-- MFC的進程和線程(1)

  MFC定義了多種狀態信息,這裏要介紹的是模塊狀態、進程狀態、線程狀態。這些狀態可以組合在一起,例如MFC句柄映射就是模塊和線程局部有效的,屬於模塊-線程狀態的一部分。

  模塊狀態

  這裏模塊的含義是:一個可執行的程序或者一個使用MFC DLL的DLL,比如一個OLE控件就是一個模塊。

  一個應用程序的每一個模塊都有一個狀態,模塊狀態包括這樣一些信息:用來加載資源的 Windows實例句柄、指...

http://tech.ddvip.com/2007-03/117415799821635.htmlMFC教程(9)-- MFC的進程和線程(2)

  下面以一個動態鏈接到MFC DLL的單模塊應用程序爲例,說明這些對象的創建過程。

  當第一次訪問狀態信息時,比如使用 AfxGetModuleState得到模塊狀態,導致系列創建過程的開始,如圖9-7所示。

  首先分析語句pState=_afxThreadState。如果_afxThreadData、線程狀態和模塊狀態還沒有創建,該語句可以導致...

http://tech.ddvip.com/2007-03/117415802321636.htmlMFC教程(10)-- 內存分配方式和調試機制

  M內存分配

  內存分配函數

  MFCWin32或者C語言的內存分配API,有四種內存分配API可供使用。

  Win32的堆分配函數

  每一個進程都可以使用堆分配函數創建一個私有的堆──調用進程地址空間的一個或者多個頁面。DLL創建的私有堆必定在調用DLL的進程的地址空間內,只能被調用進程訪問。

  HeapCreate用來創建堆;HeapAlloc用來從堆中分配一定數量的空間,HeapAlloc分...

http://tech.ddvip.com/2007-03/117415851521637.htmlMFC教程(11)-- MFC下的文件類

  文件操作的方法

  使用Visual C++編程,有如下方法進行文件操作:

  (1)使用標準C運行庫函數,包括fopen、fclose、fseek等。

  (2)使用Win16下的文件和目錄操作函數,如lopen、lclose、lseek等。不過,在Win32下,這些函數主要是爲了和Win16向後兼容。

  (3)使用Win32下的文件和目錄操作函數,如CreateFile,CopyFile,DeleteFile,FindNextFile,等等。

  Wi...

http://tech.ddvip.com/2007-03/117415865921638.htmlMFC教程(12)-- 對話框和對話框類CDialog(1)

  對話框經常被使用,因爲對話框可以從模板創建,而對話框模板是可以使用資源編輯器方便地進行編輯的。

  模式和無模式對話框

  對話框分兩種類型,模式對話框和無模式對話框。

  模式對話框

  一個模式對話框是一個有系統菜單、標題欄、邊線等的彈出式窗口。在創建對話框時指定WS_POPUP, WS_SYSMENU, WS_CAPTION和 DS_MODALFRAME風格。即使沒有指定WS_VISIBLE風格,模式對話框也會被顯示。...

http://tech.ddvip.com/2007-03/117415886921639.htmlMFC教程(12)-- 對話框和對話框類CDialog(2)

  RunModalLoop是一個實現自己的消息循環的示例,消息循環的條件是模式化狀態沒有結束。實現線程自己的消息循環見8.5.6節。當用戶按下按鈕“取消”、“確定”時,將導致RunModalLoop退出消息循環,結束對話框模式狀態,並調用::EndDialog關閉窗口。有關關閉對話框的處理如下:void CDialog::EndDialog(int nResult)
{
ASSERT(::IsWindow(m_hWnd));
if (m_nFlags & (WF_M...

http://tech.ddvip.com/2007-03/117415921421640.htmlMFC教程(13)-- MFC工具條和狀態欄(1)

  Windows控制窗口

  Windows (Windows95或者以上版本) 提供了系列通用控制窗口,其中包括工具條(ToolBar)、狀態欄(StatusBar)、工具條提示窗口(ToolTip)。

  Windows在一個DLL加載時註冊個控制窗口的“窗口類”。例如,工具條的“窗口類”是“ToolbarWindow32”,狀態欄的“窗口類”是“msctls_statusbar32”,工具條提示窗口的“...

http://tech.ddvip.com/2007-03/117415946421641.htmlMFC教程(13)-- MFC工具條和狀態欄(2)

  消息WM_POPMESSAGESTRING用來重新設置狀態欄。

  這兩個消息對應的消息處理函數分別是OnSetMessageString和OnPopMessageString,OnSetMessageString和OnPopMessageString分別實現如下:

OnSetMessageString
LRESULT CFrameWnd::OnSetMessageString(WPARAM wParam, LPARAM lParam)
{
//最近一次被顯示的消息字符串IDS(一個消息對應的字符串)
UINT nIDLast = m_nIDLastMessage; http://tech.ddvip.com/2007-03/117415973621642.htmlMFC教程(14)-- SOCKET類的設計和實現

  WinSock基本知識

  這裏不打算系統地介紹socket或者WinSock的知識。首先介紹WinSock API函數,講解阻塞/非阻塞的概念;然後介紹socket的使用。

  WinSock API

  Socket接口是網絡編程(通常是TCP/IP協議,也可以是其他協議)的API。最早的Socket接口是Berkeley接口,在Unxi操作系統中實現。WinSock也是一個基於Socket模型的API,在Microsoft Windows操作系統類中使用。它在Berkeley接口...

http://tech.ddvip.com/2007-03/117415993421643.html  
發佈了3 篇原創文章 · 獲贊 2 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章