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