たまです。
現在、読取専用のコントロールのみが配置されたダイアログでの入力受付について悩んでいます。
基本的には値を反映するだけの画面なのですが、隠しモードで画面を表示した場合のみ、
こっそりキー入力を受け付け値を変更できるようにしようと思っています。
入力されたキーの値は画面上では見せないようにしたいので、キー入力の値の受け取り方として
1.変数
2.隠しエディットコントロール
を考えたのですが、それぞれの方法で行き詰ってしまいました。
どちらもPreTranslateMessageで
pMsg->message == WM_CHARの場合のみ入力キーをそれぞれに渡したいと思っています。
1.pMsg->wParamの仮想コードを文字に変換してCString型の変数に追加格納
↑DelキーやBSキーがコードで追加されるので文字が削除されない
2.フォーカスが設定されているときは入力が反映されるがフォーカスが他にあるときは入力が反映されなし。
現在は非表示だと入力がわからないので表示して確認しています。
1の方法だと削除キーの判定が難しいので2の方法ですすめようかと思っているのですが、
キー入力を強制的に反映させる方法はあるのでしょうか?
またそれはPreTranslateMessageで行っても大丈夫なのでしょうか?
宜しくお願いします。
やり方はいろいろあるし、人それぞれ・・・
何かコンビネーションキー等操作で、隠しエディットコントロール
を非表示状態から表示状態にして、そこに普通に文字列入力させ、
エンターキーで再度隠す・・・
どこかのラベルコントロールをキーボードのSHIF+Ctrl+右ダブル
クリック・・・とかのイベント処理でキーボードスキャンして、
隠しモードからの移行処理してあとは通常の文字入力操作。
何とでもなると思いますが・・・
以上。
オショウさん、コメントありがとうございます。
今回隠しコマンドなのでこっそり受け取りたく、コントロールは非表示で検討しています。
何かイベントが発生したらその後にエディットボックスにフォーカスを飛ばし常にエディットボックスにフォーカスがある状態を維持し、
キー入力を受け取る方法で進めることにしました。
一応、方向性を決めて進めることにしましたので"解決"とさせていただ着ます。
ありがとうございました。
ツイート | ![]() |