CMFCToolBar に CMFCToolBarComboBoxButton があります。CMFCToolBarComboBoxButton がフォーカスを取得するたびに、テキスト全体が選択されるようにします。
それを実装する最もエレガントな方法は何ですか?
どうもありがとう!
アディ・バルダ
最もエレガントな方法が何であるかはわかりませんが、これを行う最も一般的な方法は、派生クラスを作成して OnSetFocus をオーバーライドし (正確なメソッド名はチェックされていません)、含まれている編集コントロールで SetCurSel() を呼び出すことだと思います。WM_FOCUS はコントロールにのみ送信され、それに対する通知メッセージはありません。そのため、コントロールにイベントを処理させる何かを行う以外に多くのオプションはありません-それを別の場所に反映させるか、単に動作を実装するだけです自体。(理論的には、メッセージを傍受することでできるあらゆる種類の細心の注意が必要だと思いますが、それは確かに最もエレガントな方法ではありません...)
これは、標準の編集コントロールの既定の動作です。そうでない場合は、他の何かがその動作を明示的に削除しています。コンボボックスのボタンに設定できるフラグが見つかるかもしれません。
そうでない場合: エディット コントロールをサブクラス化し、WM_GETDLGCODEメッセージを処理します。と論理和をとった値を返しますDLGC_HASSETSEL
。コントロールにこのフラグが設定されている場合、Windows はフォーカスのあるすべてのテキストを自動的に選択します。