0

私がここで読んだこと(ユーザーが編集コントロールを選択すると、....そしてリバースビデオを使用してそのテキストを強調表示します)、それを正しく理解していれば、CEditはクリックしたときにテキストを強調表示する必要があります(選択と同じであるといいのですが)その上に。

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

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

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

私の質問:

CEditは、最初にマウスをクリックした後、本当に自動的にテキストを選択する必要がありますか?(リソースはありますか?)

なぜこれがCMFCPropertyGridPropertyで機能しないのかわかりませんか?

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

4

1 に答える 1

0

だから私がついに見つけたもの:

CEditは、テキストをクリックした後、おそらくテキストを選択しません。これは、たとえばSetSel関数を使用して手動で実行する必要があります。

ただし、CMFCPropertyGridCtrlでは、クリックするとCMFCPropertyGridPropertyに渡され、クリックが繰り返されます。したがって、SetSelを使用すると、テキストの選択が解除されます。そのため、CMFCPropertyGridPropertyを継承し、この手順をスキップする(もう一度クリックする)独自のクラスを作成する必要がありました。SetFocusとSetSel(カーソルをCEditウィンドウに設定します)で十分です。

于 2012-01-13T09:15:57.333 に答える