?? untitled-06.txt
字號:
的開始即被調(diào)用的原因。要注意 WNDCLASS類型窗口類與 C+十中的窗口類不一樣。為了
避免混淆,我將在本書中用術(shù)語WNDCLASS來指代用RegisterClass注冊的類,用術(shù)語“窗口
類”指代從 MFC的 CWnd類派生出的 C+十類。
一旦WNDCLASS被注冊,WinMain將調(diào)用最重要的Createwindow函數(shù)來生成應(yīng)用程序
的窗口。傳遞給Createwindow的第1個參數(shù)是WNDCLASS的名字,窗口將由此生成窗口。
第2個參數(shù)是將在窗口的標(biāo)題欄中顯示的文本。第3個參數(shù)指定窗口樣式。WS_OVER-
LAPPEDWINDOW是一個常用的樣式,它生成一個頂層窗口,該窗口帶有可調(diào)整大小的邊框。
一個標(biāo)題欄、一個系統(tǒng)菜單及最小化、最大化和關(guān)閉窗口按鈕。
接下來的4個參數(shù)指定了窗口的初始位置和大小。CW_USEDEFAULT用來告訴
Windows使用默認(rèn)值。最后4個參數(shù)依次指定:該窗口的父窗口的句柄(I]3VND_DESKTOP
用作應(yīng)用程序的主窗口的父窗口);如果有的話,與窗口關(guān)聯(lián)的菜單的句柄;應(yīng)用程序的實例
句柄(一個用來讓程序員區(qū)分是程序自身還是模塊DLL的值);以及一個指向特定應(yīng)用程序
的窗口生成數(shù)據(jù)的指針。我可以輕松地用本書的一節(jié)來討論Createwindow以及它的參數(shù),
但是稍后您將看到,MFC將許多細(xì)節(jié)隱藏在類庫中了。一個典型的MFC應(yīng)用程序并不含有
WinMain函數(shù)(至少不是您能看到的),它也不調(diào)用RegisteIClass或Createwindow函數(shù)。
由于生成時沒使用WS.VISIBLE,所以CreatewindOw生成的窗口在屏幕上最初是不可見
的。(如果使用WS.VISIBLE,則它應(yīng)該在Createwindow函數(shù)的調(diào)用中與WS_OVERLAPPED.
WINDOW結(jié)合應(yīng)用。)因此在WinMain中,緊隨Createwindow后面的是對ShOWWindow和
Updatewindow函數(shù)的調(diào)用,它們使窗口可見并確保WM_PAINT消息處理程序立刻被調(diào)用。
接下來是消息循環(huán)。為了檢索并調(diào)度消息,WinMain執(zhí)行一個簡單的反復(fù)調(diào)用GetMes.
sage、TranslateMessage和DlspatchMessage這3個API函數(shù)的while循環(huán)語句。OtMessage檢查
消息隊列。如果某個消息是有效的,則它將從隊列中被刪除并復(fù)制到msg,否則,GetMessag6
將停留在消息隊列上直到消息有效。msg是結(jié)構(gòu)MSG的一個實例,其字段包含相關(guān)的消息
參數(shù),例如消息ID和消息被放置在隊列中的時間。TranslateMessage函數(shù)將一個指示字符鍵
的鍵盤消息轉(zhuǎn)換為更容易使用的WM.CHAR消息,DispatchMessop函數(shù)則將消息發(fā)送給窗
口過程。消息循環(huán)一直執(zhí)行到 GetMessage函數(shù)返回 0值時結(jié)束,而此情形只有在 WM—QUry
消息從消息隊列中被檢索到時才發(fā)生。這時WinMain結(jié)束,程序終止運行。
由DispatchMessage函數(shù)調(diào)度的消息將生成對窗口過程WndProc的調(diào)用。圖1.2中的示
例程序只是處理了兩個消息類型: WM_PAINT和 WM_DESTROY;所有其他消息被傳遞給了
DetwindowProc函數(shù)進(jìn)行默認(rèn)處理。在switch-case塊中將檢查message參數(shù)傳遞來的消息ID,
并且執(zhí)行相應(yīng)的消息處理程序。在繪制開始以前,WM_PAINT處理程序?qū)⒄{(diào)用API函數(shù)
BeginPaint來獲得一個設(shè)備環(huán)境句柄,當(dāng)繪制完成后,API函數(shù)EndPaint將釋放該句柄。在兩
函數(shù)之間,API函數(shù)ElliPse繪制了一個200像素寬、100像素高的橢圓。設(shè)備環(huán)境句柄是一
個具有奧妙功能的東西,它允許windows應(yīng)用程序在屏幕上繪圖。沒有它,像Ellope這樣的
函數(shù)就不能工作。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -