DLLのモードレス ダイアログ ボックスで、 Tab キーを捕捉するために、
以下のサイトを参考にして実装しました。
http://support.microsoft.com/kb/233263/ja
捕捉はできましたが、今度はエディットコントロール等に
全角文字が入力できなくなりました。
症状としては、「あ」を入力すると、「82 A0」のうち後半の「A0」
しかメッセージが届いていないみたいでした。
フック関数の引数を調べたところ
MSG 構造体
message = WM_CHAR
lParam = A0
は届いているが、
message = WM_CHAR
lParam = 82
は、届いていませんでした。
強制的に二つのメッセージをIsDialogMessageに渡したところ、
エディットコントロールに「あ」は表示されました。
DLLのモードレス ダイアログ ボックスに全角文字を入力する方法を
教えていただけないでしょうか?
推測ですけど余計なことをされてしまったということですね。
TabキーのときだけIsDialogMessageを適用するということで
解決しないのでしょうか。
[余談/雑談]
メッセージポンプってEXEにあるからDLLでは手が出せないってことか。
EXEもDLLも同じバージョンのMFCのDLL版を利用する形式だったら
DLLでのウィンドウのPreTransMessageってよばれなかったっけ?
wclrp ( 'o')様
テストアプリは、(MFCのexeからDLLをよびだす)
TabキーのときだけIsDialogMessageを適用するだけで
解決しました。
ありがとうございました。
実際には、ExcelからDLLを呼び出すDLLを作成しています。
この場合、IsDialogMessageを適応しないと英数字すら
書き込めないみたいです。
質問の内容が変わったので新規スレッドを立てたいと思います。
新たな問題点のスレッドです。
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200708/07080033.txt
ツイート | ![]() |