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