エディットに入力する前に入力結果を取得するには – プログラミング – Home

エディットに入力する前に入力結果を取得...
 
通知
すべてクリア

エディットに入力する前に入力結果を取得するには


さき
 さき
(@さき)
ゲスト
結合: 18年前
投稿: 3
Topic starter  

はじめまして。
VC++2008のmfcダイアログアプリで開発しています。

言っていることが矛盾しているかもしれませんが、
エディットボックスに入力した文字を取得する際に、
PreTranslateMessage関数などで捕まえたキー入力を、
そのエディットボックスに反映させる前に反映後の文字列を取得する方法がありましたら
ご教示ください。

私が試した方法は、
別にもう1つエディットを用意して、
ダイアログのPreTranslateMessage関数の中でそのエディットのメンバ関数として
PreTranslateMessageを呼び出せば…と
やってみましたが、入力キーは反映されていませんでした。
あとOnKeyDownイベントを呼び出すということもしましたが、やはり反映されていませ
ん。

全部自力で入力結果をエミュレート?する処理を作ることも考えましたが、
シンプルな方法がないかと期待を募り、質問に至りました。

何かよい方法はありますでしょうか。


引用解決済
トピックタグ
maru
 maru
(@maru)
ゲスト
結合: 17年前
投稿: 358
 

ON_EN_UPDATEではだめなんですか?


返信引用
仲澤@失業者
(@uncle_kei)
Prominent Member
結合: 5年前
投稿: 828
 

キー入力系のメッセージはキーボードフォーカスを持つ唯一のウインドウに
送られます。大まかなメッセージの順番は
 1.WM_KEYDOWN
 2.WM_CHAR
 3.WM_KEYUP
です。
さて、これらのメッセージが当該のコントロールに処理される前に取得するには、
 ・フックを使う方法
 ・当該のコントロールをサブクラス化する方法
等がすぐに思いつきますが、それぞれ利点欠点があり、目的によって
最適な方法や実装が異なります。

自分には質問の文面からは「何がやりたいのか」が読み取れませんでした。
もう少しましな回答を望む場合は、その部分を説明したほうが良いでしょう。


返信引用
ryo
 ryo
(@ryo)
ゲスト
結合: 23年前
投稿: 252
 

仲澤@失業者さんに賛同

詳細待ちですが一点だけ

>ダイアログのPreTranslateMessage関数の中でそのエディットのメンバ関数として
>PreTranslateMessageを呼び出せば…と

エディットへのキー入力については
ダイアログのPreTranslateMessageで確認できる

引数pMsgのhWndがエディットのものか、またmessageがWM_KEYDOWNであるか確認し、
その際のwParamの値をみればいい(ただし値は、virtual key コードで数字)。

なお、このタイミングは、
エディット表示どころか、エディットの実体に反映する前なので
エディットのメンバ関数やら変数やらを見ても意味はない


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました