深入淺出MFC筆記

2021-05-06 17:43:19 字數 3463 閱讀 2590

深入淺出mfc筆記

一、

勿在浮砂築高台

1、並不是擴充套件名為

.dll

(dynamic link library

)的才是動態鏈結庫。事實上,

.exe

、.dll

、.fon

、.mod

、.drv

和.ocx

都是所謂的動態鏈結函式庫。

2、windows

程式編譯時需要包含

windows.h

標頭檔案,若需要使用諸如

commdlg.dll

等動態庫,需要包含

commdlg.h

等標頭檔案。鏈結時需要

gdi32.lib

、user32.lib

和kernel32.lib

,可能還需要

comdlg32.lib

等「import

函式庫」。程式執行時需要對應的

gdi32.dll

、user32.dll

、kernel32.dll

和commdlg.dll

等動態鏈結庫。

3、makefile

檔案是利用

makefile

的語法寫成的以

.mak

為字尾的檔案。可以設定某個檔案和某個檔案對比,由其比較結果來決定要不要做某些你所指定的操作。而後利用

nmake.exe

或make.exe

處理之。rs、

cl、link

等編譯鏈結命令可以寫在其中。

4、api

函式getmessage

和peekmessage

,如下兩個訊息迴圈:

1)msg msg;

while(getmessage(&msg,null,0,0))

2)while(true)

else

onidle(); }

使用getmessage()

,當作業系統執行該執行緒時,如果訊息隊列為空,則會過門不入。若使用

peekmessage()

,執行緒會取回控制權,使程式可以執行一段時間。於是可以進入

onidle()

函式中。

5、console

程式是在

windows

環境下編寫的,不牽扯任何視窗、對話方塊、控制項的程式。不能與

dos程式混為一談。主要有如下方面:

1)編寫方式:

console

程式在windows

環境下編寫,可以使用

c runtime

函式和「不牽扯

gui」的

win32 api

函式庫;

dos程式在

dos環境下編寫,只能呼叫

c runtime

函式庫。

2)程式功能:由於

console

程式可以呼叫部分的

windows api

函式,所以可以使用

windows

提供的各種高階功能。比如可以產生程序,產生工作者執行緒,取得虛擬記憶體資訊和刺探作業系統的各種資料。

3)可執行檔案格式:

dos程式師所謂的

mz格式,

console

程式和所有的

win32

程式一樣,是所謂的

pe格式,可以再任何

win32

平台上執行。

6、乙個程序的誕生與死亡

1)shell

(資源管理器或檔案管理器)呼叫

createprocess啟用。

2)系統產生乙個「程序核心物件」,計數值為1.

3)系統為此程序建立乙個

4gb位址空間。

4)載入器將必要的**載入到上述位址空間中,包括

的程式、資料、以及所需的動態鏈結庫。載入器如何知道要載入哪些

dlls

呢?他們被記錄在可執行檔案(

pe檔案格式)的

.idate section

中。5)

系統為此程序建立乙個執行緒,稱為主線程。執行緒才是

cpu時間的分配物件。

6)系統呼叫

c runtime

函式庫的

startup code。7)

startup code

呼叫程式的

winmain

函式。8)

程式開始執行。

9)使用者關閉

主視窗,使

winmain

中的訊息迴圈結束,於是

winmain

結束。10)

回到startup code

。11)

回到系統,系統呼叫

exitprocess

結束執行緒。

7、建立乙個執行緒,最好以

c runtime

函式_beginthreadex

、_endthreadex

代替windos api

函式createthread

和exitthread

。c runtime

函式會為每個執行緒做一些額外的登記工作,可以保證多執行緒情況下的安全。

mfc中庫函式

afxbeginthread

和afxendthread

也可用於建立和結束執行緒。

二、

c++

重要性質

1、四種不同的物件生存方式:

in stack

,in heap

,global

,local static

。分別為在棧中、堆中、全域性靜態物件(初始化過程在

winmain

函式呼叫之前,由

startup

幫忙)、區域性靜態物件(只有乙個例項產生,不在堆中,也不在棧中)。

2、rtti

(runtime type information

),執行時型別識別,通過

dynamic_cast

和typeid

操作符實現。

三、

mfc

六大關鍵技術之**

包括mfc

程式的初始化,

rtti

(runtime type information

),dynamic create

,presistence

(永久儲存),

(訊息對映),

command routing

(命令傳遞)。

《深入淺出MFC》筆記(三)

1,win32 console程式示例 include include include include const int filemax 300 allow max.300 files in each directory typedef struct destfile destfile typed...

深入淺出MFC 卷首語

昨晚有點睡不著,想起還有些書還沒看完,於是,起床把 深入淺出mfc 看完了。看這本書斷斷續續也有乙個多月了,我看完之後的第一衝動是找本mfc應用的書來深入熟悉熟悉mfc。因為,看這本書的時候,才發現自己的mfc知識是那麼的貧乏,總有點力不從心的感覺,以至於很多東西都一看而過,根本進入不了思考的階段。...

深入淺出MFC 卷首語

昨晚有點睡不著,想起還有些書還沒看完,於是,起床把 深入淺出mfc 看完了。看這本書斷斷續續也有乙個多月了,我看完之後的第一衝動是找本mfc應用的書來深入熟悉熟悉mfc。因為,看這本書的時候,才發現自己的mfc知識是那麼的貧乏,總有點力不從心的感覺,以至於很多東西都一看而過,根本進入不了思考的階段。...