2012-01-12 10 views
0

私が読んだ内容here(ユーザーが編集コントロールを選択したとき、逆のビデオを使ってそのテキストをハイライト表示すると)、CEditが強調表示する必要がありますそれをクリックするとselectと同じです)。CMFCPropertyGridPropertyとCEditのテキスト自動選択

CMFCPropertyGridPropertyでCMFCPropertyGridCtrlを使用しています。しかし、グリッド(1つのプロパティ値)をクリックすると、何も選択されません。

私が知っているもの:プロパティは内部的にプロパティ値を手動で編集するためのCEditを作成します。作成され、そのフォントが設定されます。その後、SetFocusが呼び出され、そのUpdateWindowの後に - これは編集ボックスを再描画し、最初の文字の前にカーソルを設定します。その後、マウスのクリックが再び呼び出され、編集ボックスをクリックします。これは正しいようです。しかし、テキストは選択されません。

CMFCPropertyGridPropertyから派生した独自のプロパティクラスを作成しようとしました。私はこの後SetSelを呼び出しました。それは本当に私のテキストを選択しますが、次にそれを選択解除します(次の再描画で)。私が達成したことは、Redrawの後、開始からマウスクリックまでのテキストのみが選択されたことです(4番目の文字をクリックしたとき、最初の4文字のみが選択されました)。

私の質問:

万一CEditの最初のマウスがクリックした後、実際にautomaticalyテキストを選択しますか? (リソースがありますか?)

CMFCPropertyGridPropertyでこれが動作しないのはなぜですか?

CMFCPropertyGridCtrlとCMFCPropertyGridPropertyは、mfcソースコードディレクトリのafxpropertygridctrl.h/.cppにあります。

答えて

0

だから私は最終的に判明したもの:

CEditのは、おそらくそれをクリックした後、テキストを選択しません。これは例えばSetSel関数などで手動で行う必要があります。

CMFCPropertyGridCtrlでは、クリックするとCMFCPropertyGridPropertyに渡され、クリックが繰り返されます。 SetSelを使用すると、テキストの選択が解除されます。だから私はCMFCPropertyGridPropertyを継承し、このステップをスキップ(私は再びクリック)自分のクラスを書く必要がありました。 SetFocusとSetSel(これはCEditウィンドウにもカーソルを設定します)でも十分です。

関連する問題