0

申し訳ありませんが、タイトルは少しあいまいでした。

基本的に、私はC ++でチャットプログラムを作成し、windows.hAPIを使用しています。私はほとんどのプログラムを動作させていますが、小さなものだけが正しく動作していません。ユーザーが言いたいことを入力するボックスがあり、そのボックスに「ここにテキストを入力してください」と斜体で表示されています。ユーザーがそのボックスをクリックすると、それらの単語が消えて、ユーザーが自由に入力できるように設定したいと思います。現在設定されているように、ボックス内をクリックすると、「ここ」という単語の最後に移動し、手動で単語を削除する必要があります。

これを行う簡単な方法はありますか?おそらくボックスやテキストを作成するとき?または、これを実現するために独自のロジックを追加する必要がありますか?

添付されているのは、ボックスを作成するコードとフォントを設定するコードです。

箱:

hwSendEdit = CreateWindowEx(WS_EX_CLIENTEDGE, "Edit", "Enter Text Here", 
WS_CHILD|WS_VISIBLE, 2, 215, 790, 22, hwMain, 0, hInst, 0);

フォント:

chFont = CreateFont(12, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, "Tahoma");
SendMessage(hwSendEdit, WM_SETFONT, reinterpret_cast<WPARAM>(chFont), 0);

あなたが提供できるどんな助けにも感謝します。

4

1 に答える 1

1

WM_ACTIVATEコントロールのメッセージに応答する必要があります。wParamコントロールがアクティブ化されているか非アクティブ化されているかを示すパラメーターがあります。アクティブになっている場合は、ウィンドウのテキストをチェックして、プロンプト文字列と等しいかどうかを確認します。その場合は、フォントを通常に戻し、を使用SetWindowTextしてテキストをクリアします。非アクティブ化されている場合は、を使用GetWindowTextしてテキストが空かどうかを確認し、空の場合はフォントをイタリックに戻し、プロンプト文字列を置き換えます。

于 2012-04-19T17:36:53.230 に答える