1

MFC ドキュメント/ビュー アーキテクチャを使用して C++ でプログラミングしています。私はMFC CEdit lose focus handlerに似た何かを達成しようとしています。回答が示すように、メッセージ EN_KILLFOCUS を処理しました。

基本的に、私はこれをやっています: ビューにテキストを描画しています。ユーザーがビュー内のテキストの領域をクリックすると、その上に CEdit ウィンドウを配置して表示し、ユーザーがテキストを編集できるようにします。編集がフォーカスを失うと、CEdit テキストを取得してドキュメントに保存します。次に、ビューを無効にします。

ただし、ビューがフォーカスを失ったときにのみ EN_KILLFOCUS メッセージを受け取るようです。CEdit のフォーカスを失わせるには、ドッキング ウィンドウやツールバーなど、別の場所をクリックする必要があります。CEdit ボックスの外側で、ビューの他の場所をクリックしたときにそれが発生するようにします。

WS_CHILD スタイルで CEdit を作成しています。WS_POPUP を試しましたが、それでも同じ問題が発生します。

どんな助けでも大歓迎です。

4

1 に答える 1

1

CEdit 派生クラス/コントロールを作成します。ビューでこのクラスのインスタンスを作成

し、派生クラスで EN_KILLFOCUS を処理します。ユーザーが編集コントロール ウィンドウの外をクリックすると、このメッセージを処理できます。
編集ボックスを WS_CHILD のままにします。

ビューのマウス ダウンでビューにフォーカスを設定し、ビューの LButtonDown で SerFocus() を呼び出します。

于 2014-02-18T08:35:46.573 に答える