深入淺出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知識是那麼的貧乏,總有點力不從心的感覺,以至於很多東西都一看而過,根本進入不了思考的階段。...