9

Stack Overflow サイトの右上を見てください。検索ボックスには、「検索」というテキストがあります。その中をクリックすると、テキストが消えます。

これと同様のことをしたい - win32 エディット コントロールが空の場合 (つまり、テキストがない場合)、その中にテキストを通常のテキストよりも落ち着いた色でペイントしたい。コントロールにフォーカスがある場合、またはその中にテキストがある場合は、それをペイントしたくありません。

実際のテキストをコントロールに設定してテキストの色を変更せずにそれを行う方法はありますか? たぶんコントロールペイントか何かを傍受することによって?

ありがとう。

4

6 に答える 6

8

XPから可能です。EM_SETCUEBANNERメッセージを確認してください。ただし、XP では正常に動作しないという特定の問題があるため、Vista を扱っている場合に最適です。

Win2k またはそれ以前のバージョンで必要な場合は、少なくともそれらのプラットフォームでは自分で行う必要があります。

于 2009-07-28T23:45:08.817 に答える
3

この質問をありがとう、私は将来これを使用できるようになります。FWIW(おそらくそれほど多くはありません)、Delphiでの実装は次のとおりです。

procedure TForm1.FormShow(Sender: TObject);
const
  ECM_FIRST = $1500;
  EM_SETCUEBANNER = ECM_FIRST + 1;
begin
  SendMessage(edt.Handle,EM_SETCUEBANNER,0,LParam(PWideChar(WideString('Enter search here'))));
end;
于 2009-07-29T21:01:50.653 に答える
1

1つの可能性:所有者描画にし、.Textプロパティが空の場合は、手動でテキストをペイントします。

于 2009-07-28T22:58:20.037 に答える
1

EM_SETCUEBANNERを見てください。

于 2009-07-28T23:44:57.587 に答える
0

所有者が描画する必要はありません。ユーザーAPI(バナー)を使用してネイティブです。サンプルについては、 Winapi grpを参照してください(C)

于 2009-08-01T21:43:04.083 に答える
0

たぶん、しかし、必要に応じてデフォルトのテキストと色を設定し、「onClick」イベントでクリアしないのはなぜですか?

于 2009-07-28T21:22:32.350 に答える