MFC SDK程式設計

2021-06-17 19:20:56 字數 2110 閱讀 2612

windows api

控制代碼(handle),資源的標識

作業系統要管理和操作這些資源,都是通過控制代碼來找到相應的資源。

需要什麼標頭檔案(.h)

所有windows程式都必須載入windows.h。

sdk 程式只要包含windows.h 就好,所有api  的函式宣告、訊息定義、常數定義、巨集定義、都在windows.h檔案中。除非程式另呼叫了作業系統提供的新模組(如commdlg、toolhelp 、ddeml...),才需要再各別包含對應的.h 檔案。

訊息為基礎,以事件驅動之

windows程式的進行系依靠外部發生的事件來驅動。

程式進入點winmain

winmain是windows程式的進入點:

int callback winmain(  hinstance hinstance, hinstance hprevinstance, lpstr lpcmdline, int ncmdshow)

視窗類之註冊與視窗之誕生

視窗產生之前,其屬性必須先設定好。程式必須在視窗之前先利用api函式registerclass設定屬性(註冊視窗)。registerclass需要乙個大型的資料結構wndclss作為引數。

注意,creatwindow只產生視窗,並不現實視窗,所以必須再利用showwindow將它顯示在螢幕上。

訊息迴圈

while (getmessage(&msg,...))  

translatemessage是為了將鍵盤訊息轉化,dispatchmessage會將訊息傳給視窗函式去處理(訊息發生之時,作業系統已經根據當時狀態,為它表明了所屬視窗,而視窗所屬的視窗類又已經明白標示了視窗函式(也就是wc.lpfnwndproc所指函式))。

視窗的生命中樞:視窗函式

訊息迴圈中的dispatchmessage通過user模組的協助,把訊息分配到該視窗的視窗函式,視窗函式通常利用switch/case方式判斷訊息的種類,以決定處置方式,由於他是被windows系統呼叫的(我們並沒有在應用程式的任何地方呼叫此函式),所以這是一種call back 函式,意思是指"在你的程式中,被windows系統呼叫"的函式。這些函式雖然由你設計,但永遠不會也不該被你呼叫,她們是為windows系統準備的。

視窗函式設計為callback形式,才能開發乙個介面給作業系統呼叫。

lresult callback windowproc( 

hwndhwnd, 

uintumsg,

wparamwparam, 

lparamlparam 

); 注意,不論什麼訊息,都必須被處理,所以 switch/case 指令中的 default:處 必須呼叫 defwindowproc ,這是 windows 內部預設的訊息處理函式。

windows程式的生與死

作業系統與應用程式職責不同,二者是互相合作的關係,所以必須各做各的分內事,並互以訊息通知對方。

如果不依據這個遊戲規則,可能就會有麻煩產生。你可以作乙個小實驗,在視窗函式呼叫wm_destroy,但不呼叫postquitmessage。你為發現選擇系統選單中的close時,螢幕上的這個視窗消失了(因為視窗摧毀及資料結構的釋放是defwindosproc呼叫destroywindows完成的),但是應用程式本身並沒有結束(因為訊息迴圈結束不了),它還留在記憶體中。

MFC SDK和API有什麼區別

mfc sdk和api有什麼區別 mfc microsoft foundation class 微軟函式類庫 sdk software development kit,軟體開發包 軟體開發包通常是一系列api函式,而mfc 是由微軟公司提供的對api封裝後的類庫,因此從這個意義上可以說mfc是sdk...

程式設計,還是程式設計

喜歡程式設計,雖然水平一般,但還是執著地學習與程式設計有關的知識。中間因為工作關係與程式設計遠離了一段時間,現在又重拾起來,細想起來還是因為喜歡吧。喜歡程式軟體的思想和原理,喜歡程式 的魅力和成就感。程式設計軟體的思想是最值得學習的,一直認為思想決定行動,思想改變世界。每種軟體的流行和受人追捧,無不...

少兒程式設計程式設計

機械人比賽,聽上去讓人有一種高大上的科技感,沒錯,在大多數人眼裡,玩機械人那是科學家做的事情,不過隨著機械人教育的普及,越來越多的孩子也能夠駕馭這高大上的機械人。格物斯坦小坦克告訴你原因,這是歸結於孩子對於程式設計課程的學習,學會對機械人進行程式設計了,自然就能玩轉機械人啦。參加機械人比賽的意義遠遠...