TranslateMessage

TranslateMessageは、仮想キーメッセージを文字メッセージに変換するWindowsAPI・・・。

TranslateMessage 関数

キーボードの任意のキーを押すと、それは仮想キーメッセージとしてシステムに伝えられる・・・。
ただ、入力された文字が何なのかはそれだけではわからないので、TranslateMessageで変換する・・・。

といっても、通常はメッセージループの中に入れて、

	while (GetMessage(&msg, NULL, 0, 0) > 0){

		TranslateMessage(&msg);
		DispatchMessage(&msg);

	}

こんな風に呼び出す・・・。
文字メッセージに変換されるとWM_CHARが発生する・・・。
今回はそれが来るかどうか確認する・・・。

こんな風にメッセージループにTranslateMessageを入れておく・・・。

キーを押すと、WM_KEYDOWNが発生し(ここには書いてないけど)、TranslateMessageによって仮想キーメッセージは文字メッセージとなり、WM_CHARを発生させる・・・。
でWM_CHARが来たとき、TextOutで"WM_CHAR"と表示・・・。

キーが押されている状態から離れた状態になったときにWM_KEYUPが発生する・・・。
でこのときRectangleを表示することで、その前に表示された"WM_CHAR"を隠す・・・。

実行すると、

f:id:BG1:20150412211850p:plain

なにもないウィンドウが表示・・・。
キーを押すと、

f:id:BG1:20150412211916p:plain

"WM_CHAR"が出ている・・・。
離すと、

f:id:BG1:20150412212034p:plain

"WM_CHAR"は矩形で隠される・・・。
また、押すと、

f:id:BG1:20150412212233p:plain

矩形の上にWM_CHARが表示・・・。

Sample/TranslateMessage.cpp at master · bg1bgst333/Sample · GitHub