アカウント名:
パスワード:
If the application has created an IME window, it should call ImmIsUIMessage. Otherwise, it should pass this message to DefWindowProc.
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
吾輩はリファレンスである。名前はまだ無い -- perlの中の人
使い回した開発者のミス? (スコア:0)
いや、おかしいなって気づいてもよほどあからさまな間違いでもない限り、そのやり方が正しいやり方なんだって思うだろ、普通。サンプルコードとはそういうもの。常考。
Re:使い回した開発者のミス? (スコア:3, すばらしい洞察)
WM_IME_SETCONTEXTのヘルプ [microsoft.com]には、 とあります。
例示されたサンプルはなにもせずにreturnしているので、明らかにウィンドウメッセージのヘルプと矛盾しているんですよね。
ただ、WM_IME_???系の処理を行ったことがない方だと、気付けないのもやむなしかもしれませんが……。
Re:使い回した開発者のミス? (スコア:1)
本当は、このメソッドを呼び出した呼び出し元WindowProcの
lParamを書き換えて、呼び出し元のWindowProcに制御を返したいわけです。
呼び出し元がWM_IME_*に対して何か処理をしている可能性もありますので。
return falseはおそらく、デフォルトの処理を行うことをあらわしています。
このサンプルを書いた人は、lParamを書き換えておけば
return後に呼び出されるDefWindowProc相当関数のパラメータも
変更されて呼び出されると(無意識のうちに)考えてしまったのでしょう。
とはいえ、DefWindowProcを呼び出すようなコードは、
後で修正がしにくくなるでしょう。
DefWindowProcを呼びだしてデフォルトの処理を避ける(return true)のは、
あくまでも次善の策です。