windows程式設計筆記4

2021-08-31 22:56:55 字數 961 閱讀 7605

1.鍵盤訊息的處理分為2步:首先在系統訊息佇列中儲存訊息,然後將它們放入應用程式的訊息佇列,目的是為了同步。考慮鍵盤輸入導致視窗焦點切換,若直接放到應用程式訊息佇列中可能切換後的視窗不再能夠接受到鍵盤輸入。

2.對產生可顯示字元的擊鍵組合,window產生擊鍵訊息以及字元訊息;對於不產生字元的鍵則只產生擊鍵訊息。

3.wm_keydown可能會重**送,wm_keyup每次擊鍵只會發生一次。

4.對於所有擊鍵訊息,wparam是擊鍵**,表示按下或釋放的鍵;而lparam則包含屬於擊鍵的其他資料。

5.功能鍵的判斷。

istate = getkeystate(vk_shift);

istate = getkeystate(vk_capital);//根據isate的不同位來檢視

6.合理的鍵盤操作應該根據wm_char、wm_deadchar、wm_syschar、wm_stsdeadchar來進行,wm_keydown類訊息有可能因為鍵盤布局的差異性出現錯誤。translatemessage訊息從wm_keydown訊息產生了字元訊息。wm_char訊息夾在擊鍵訊息之間。deadkey基本上可以無視了。

如,巧了a鍵,產生的訊息順序為:wm_keydown | wm_char | wm_keyup

7.規則:如果需要讀取輸入到視窗的鍵盤字元,處理wm_char訊息;如果需要讀取游標鍵、功能鍵等,處理wm_keydown訊息。

8.插入符函式。

createcaret、setcaretpos、showcaret、hidecaret、destroycaret、getcaretpos、getcaretblinktime、setcaretblinktime

乙個訊息佇列只能支援乙個插入符,所以不應該在視窗create時建立caret避免多個視窗的情況。只有獲取焦點的視窗才應該有caret很容易理解~~

hidecaret具有累積性,也就是說hide了多少次就要show多少次才能把caret搞出來...

windows程式設計筆記

在複習socket通訊時遇到了i o復用技術這個問題,由這個問題引申出了select模型,i o通訊模型的問題,在windows下對其進行了實現。但是很多概念性的東西不是很明白,於是檢視了 windows核心程式設計 這本書,不得不說這本書對windows的很多東西講的很透徹,因為時間的原因,只專門...

windows程式設計筆記3

1.imouse getsystemmetrics sm mousepresent 檢查滑鼠是否安裝 cbuttons getsystemmetrics sm cmousebuttons 檢查滑鼠鍵個數 wdnclass.hcursor loadcursor null,idc arrow 指定視窗的...

Windows程式設計筆記2

1.關於hdc hdc hdc hdc getdc hwnd for int i 0 i 20 i releasedc hwnd,hdc getdc 與releasedc 一起使用。不能用於beginpain hdc beginpaint hwnd,ps textout hdc,0,0,paintd...