學(xué)習(xí)了一個星期的SDK,下面是做的點筆記
消息宏前綴:
WM_:窗口消息
BM_:按鈕控制消息
CB_:組合框控制消息
EM_:編輯框控制消息
LB_:列表框控制消息
SBM_:滾動條控制消息
一個句柄標(biāo)識一個Windows使用的唯一整數(shù)數(shù)值,用來標(biāo)識應(yīng)用程序中不同對象和同類對象中的不同的實例,應(yīng)用程序通過句柄來訪問相應(yīng)的對象信息
HWND? 窗口句柄
HDC?? 設(shè)備環(huán)境句柄
HINSTANCE?? 當(dāng)前實例句柄
HBITMAP?? 位圖句柄
HCURSOR?? 光標(biāo)句柄
HICON???? 圖標(biāo)句柄
HFONT???? 字體句柄
HBRUSH??? 筆刷句柄
HMENU???? 菜單句柄
HFILE???? 文件句柄
SDK常用的數(shù)據(jù)結(jié)構(gòu):
? MSG:包含一個消息的全部信息
? WNDCLASS:包含窗口類的全部信息
? RECT:矩形區(qū)域
? PAINTSTRUCT:為每一個窗口保存一個"繪圖信息結(jié)構(gòu)"
? TEXTMETRIC :字體結(jié)構(gòu)
InvalidateRect和UpdateWindow的區(qū)別
InvalidateRect是將客戶區(qū)標(biāo)記為無效,并產(chǎn)生WM_PAINT消息,Windows會將WM_PAINT消息放入隊列,等待窗口過程的處理,然后操作系統(tǒng)將WM_PAINT當(dāng)作是低優(yōu)先級消息,如果后面有其他的動作要處理,則可能會出現(xiàn)空白的區(qū)域需要等待一段時間才被刷新。
UpdateWindow則將導(dǎo)致操作系統(tǒng)立即用WM_PAINT調(diào)用窗口過程,而不進入隊列,使窗口得到立即的刷新。窗口過程完成刷新后立即退出,Windows將控制返回給UpdateWindow之后的語句。*/
if(!TranslateAccelerator(hwnd,hAccel,&msg))
在消息循環(huán)中,截獲加速鍵消息TranslateAccelerator尋找WM_KEYDOWN,WM_CHAR,WM_KEYUP序列與表中鍵值匹配的字符,如果找到,它插入一條WM_COMMAND到消息隊列,在消息隊列中的命令I(lǐng)D可以是加速鍵表定義的任何入口
PostQuitMessage函數(shù)投遞一個WM_QUIT消息到線程消息隊列并且立即返回.該函數(shù)簡單的通知系統(tǒng)線程請求馬上退出.當(dāng)線程從它的消息隊列收到WM_QUIT消息時,將退出自身消息循環(huán)并且交還控制給操作系統(tǒng).WM_QUIT消息的wParam參數(shù)作為程序退出碼返回給系統(tǒng)處理.
PtInRect(&rect, point)//判斷點是否在矩形內(nèi)
wsprintf(char szTitle[],"%d",i)//把輸出格式和輸出變量送到szTitle數(shù)組
?
?
?