?? mfc學習進階01.txt
字號:
樓主
大家好,這是第一期。老實說其實這是一個讀書筆記,因為我覺得一個人學東西實在是有點枯燥,效果又不好,讀書的時候想到的問題又沒有人來馬上回答,過后有會忘記,所以想了這么一個招,把我當時的想法記錄下來。我用的書是《MFC24學時教程》--自學通系列,機械工業出版社,美國Michael Morrison著,1999年出版。
好,下面是第一學時《進入MFC》
看第一節,羅里羅唆的說了一大段,我大概梳理了一下,主要是講了MFC和Win32 API之間的關系,主要有以下幾點:
1。他們都是為Win32平臺服務,Win32 API都是為了Win32應用程序的開發服務的。
2。他們的身份不一樣。Win32 API是一個龐大的C語言函數和數據結構的集合,而MFC是封裝了Win32 API函數并自定義了一些數據類型,是建立在Win32 API之上的。當然Win32 API仍然存在于MFC開發的程序之下。
3。他們的服役年份不一樣,Win32 API是MFC還沒有出道以前,程序員用來開發Win32應用程序的工具,而當MFC出現以后,程序員用MFC開發程序。
4。他們的復雜程度不一樣。因為MFC對Win32 API進行了封裝,理所當然得比Win32 API用起來要簡單。
看到了這些關系,我覺得學習MFC之前了解一下Win32 API編程和有好處,不曉得哪位好心人能提供一個Win32 API運用程序的源代碼,登在這個論壇上可以,發給我也可以,我的郵箱是dasanlang_1983@mail.china.com,如果不怕麻煩的話,請多來點注釋,謝謝。
再看第二節,講的是Windows,其實就是Win32 API程序設計的基本原則。大概也有幾個方面:
1。在Win32中,一切都開始于對窗口的理解。(書上的原話,我也不太理解,我想大概的意思是我們同窗口打的交道最多也是最直觀的,他好像是程序運行的中心)Win32 API包含了范圍廣泛的窗口操作函數,也定義了不同種類的窗口模板。即是,Win32 API中有控制窗口最大化,移動等等函數,也有各種各樣的窗口,比如說,主窗口,對話框,菜單等等。反正只要知道Win32 API中有很多有關窗口的東東,要不然也不會用來進行Windows編程。
2,理解窗口過程,事件和消息的概念
每一個窗口類都包含一個指向窗口過程的指針,(書上的原話,我看到這里我就想,這個窗口過程到底是則么樣的呢?是個函數還是個其他的東西?用來干嗎?為什么要搞一個指針指向它?難道在其他地方要用它,否者干嗎要知道他在什么地方,如果知道的話,告訴我)Win32窗口的核心是窗口過程,它是一個包含驅動窗口行為的所有代碼的特殊函數。(哦,原來他是用來驅動窗口的所有行為,還是個函數,那指向她又是為了什么呢?難道是另外有一個專門進行管理的函數要調用他,它只是提供驅動窗口行為的功能,還要受到其他函數的管理,有不對的地方請指出)
窗口過程包含一個巨大的Switch語句,(可以理解,既然是對所有的行為提供驅動,當然要區分是什么行為了喲) 我們用它來區分窗口接收到的不同消息。(是單擊了鼠標還是按了一下鍵盤。只是區分是哪種消息,那么處理交給誰了呢?)
當我們說一條消息發送到某個窗口,實際是這個窗口的窗口過程被調用了。
Win32定義了很多個不同的消息,經常用到的有以下一些消息:
.WM_CREATE:窗口被創建時發送此消息(也就是說,窗口過程比窗口還要先存在,不過窗口都沒有,哪來的窗口過程?那就是說明這條消息并不是發送給自己的窗口過程的,那到底是發送給誰的呢?)
.WM_PAINT:窗口需要重繪的時候發送此消息
.WM_LBUTTONDOWN:單擊的時候發送
.WM_MOUSEMOVE:鼠標移動
.WM_CLOSE:窗口即將關閉是發送(其實這前面的前綴是有點花頭的,WM時表示一般的窗口,LB表示下拉列表框,還有很多)
事件的理解
Windows編程是一種事件驅動程序設計,即運用程序是由外部事件來驅動的,這些事件作為消息傳送給運用程序。
3。理解其中陌生的數據類型
Win32編程中會有一些特殊的數據類型。其中用得最多的是句柄,句柄是一個用來唯一標識一個對象或一段內存區空間的整數標識符(句柄看起來像一個指針),實際上句柄是一個類似非直接指向內存區的一個間接指針,也就是說,我們并不需要了解內存是否被移動過。(他總是能指向目標人物,不管他在哪。)
句柄跟指針一樣,指向不同的東西,是要不同的句柄喲。比如:指向圖標的時候句柄被命名為HICON,指向菜單的時候為HMENU.
4.理解WinMain()函數
大家知道在c語言中有main()函數,這里的WinMain()函數也是差不多的,用來作為運用程序的入口點,但與main()不同的是WinMain()做一些創建和初始化的工作后就退出了。在WinMain()創建晚一個主窗口以后,運用程序的其它部分執行窗口的響應消息。(但聽說MFC好像把WinMain()函數藏起來了,因為WinMain()函數中的大部分代碼其他程序都需要)
以上就是我們對Win32 API編程的理解,總結一下,好像也跟c差不多。WinMain()函數創建和初始化主窗口,然后運用程序由窗口過程來管理,處理各種事件的消息。不同的是數據結構和庫函數。(目前為止我也只有這么認為了)
下面第三節,我們看看MFC的特點
主要了解一下幾點就行了,因為以后我們還要學嘛
1。MFC對Win32 API中的函數用C++這個工具進行了封裝,不但封裝了數據結構,還提供了能訪問Win32 API標準函數的成員函數
2。MFC中最重要的封裝類就是CWnd,包含了窗口的絕大部分窗口功能。(了解即可)
3。MFC簡化了運用程序響應消息的方式,把消息映射到成員函數里面,編寫了響應函數。而不是一大堆SWITCH
這一次就到這里了,我們沒有講什么了。就是說了MFC和Win32 API的關系,然后講一講Win32 API編程的特點。最后就是MFC了。
下一次我們要用一個具體的,也是最簡單的MFC運用程序來介紹一下MFC編程。OK,下次見!
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -