一般情況下,如果是普通的字元資訊,比如說0-9、a-z,或者是a-z,一般只要處理wm_char資訊就可以了。但是對於具有特殊含義的key,比如說f1-f12,或者是ctrl、shift、alt、tab、windows這樣的key,wm_keydown和wm_keyup也是需要處理的,因為這些按鍵通常是作為特殊按鍵和其他按鍵一起配合使用的,所以在wm_keydown的時候就要做好狀態標記,這樣有利於後面的應用。
為了驗證我們的想法,大家可以做這樣乙個實驗,
case wm_keydown:
//messagebox(null, "down", "tips", 0);
break;
case wm_keyup:
//messagebox(null, "up", "tips", 0);
break;
case wm_char:
messagebox(null, "char", "tips", 0);
break;
這是在wndproc裡面新增的訊息函式。大家可以先將messagebox都注釋掉,再乙個乙個開啟。這個時候,就可以觀察一下,當乙個key按下去的時候,是不是真的會有對話方塊彈出來。如果對話方塊彈出來,盡量用滑鼠來單擊,這樣可以避免key的影響。
這裡的key只是處理普通的字元,那如何處理輸入法給出的字串資訊呢,其實win32在這方面也做好了準備。這個資訊就是wm_ime_char相關的資訊。大家只要做好wm_ime_char方面的處理,就可以收到輸入法提供的字串資訊了。類似的訊息還有wm_ime_keydown、wm_ime_keyup、wm_ime_composition等等,大家可以具體問題具體分析。
case wm_ime_char:
break;
大家可以自己實際操作試一試。 win32 訊息機制
2 windows訊息系統組成 訊息佇列 作業系統負責為程序維護乙個訊息佇列,程式執行時不斷地從訊息佇列進行訊息的獲取,處理訊息 訊息迴圈 應用程式不斷地獲取訊息,處理訊息構成訊息迴圈。3 win32訊息路由 1.訊息產生 2.系統將訊息排列到其應該排放的執行緒的訊息佇列中。3.執行緒中的訊息迴圈呼...
win32 訊息機制
本次使用的開發環境是vs2013,使用的開發語言是c c 建立的專案是win32專案 當 windows 應用程式開始執行時,系統會為該程式建立乙個訊息 佇列用於存放訊息,然後用 getmessage 等進行訊息獲取處理。程式從佇列中獲取訊息後處理 分為系統訊息佇列 有系統維護,存放系統產生的訊息如...
win32訊息機制
windows作業系統最大的特殊是良好的使用者互動性 訊息機制 產生訊息,傳遞訊息並處理訊息的過程 1.產生訊息 不可控 1 typedef struct tagmsg 2 msg 2.傳遞訊息 分成兩個部分,1 系統傳遞訊息給應用程式 不可控 2.應用程式傳遞訊息給應用程式 可控 windows作...