Comment puis-je utiliser « texte d'espace réservé » dans un contrôle d'édition win32?

StackOverflow https://stackoverflow.com/questions/1196779

  •  20-09-2019
  •  | 
  •  

Question

Jetez un oeil en haut à droite du site débordement de pile. La zone de recherche a un texte en lui disant « recherche ». Lorsque vous cliquez à l'intérieur, le texte disparaît.

Je veux faire quelque chose de semblable à cela - si un contrôle d'édition win32 est vide (ce texte n'a pas), je veux peindre un texte à l'intérieur, dans une couleur plus modérée que le texte normal. Si le contrôle a le focus, ou s'il y a du texte à l'intérieur, je ne veux pas peindre cela.

Est-il possible que je peux le faire sans mettre le texte actuel dans le contrôle et changer la couleur du texte? Peut-être en interceptant la peinture de contrôle ou de quelque chose?

Merci.

Était-ce utile?

La solution

Il est possible de XP. Vérifiez la EM_SETCUEBANNER message. Cependant, il y a certains problèmes qui le font fonctionner pas tout à fait comme devrait sur XP, il est donc préférable si vous avez affaire à Vista.

Si vous avez besoin pour Win2K ou les anciennes versions, vous devrez le faire vous-même, au moins sur ces plates-formes.

Autres conseils

Merci pour cette question, je vais pouvoir l'utiliser dans l'avenir. FWIW (pas grand-chose, sans doute), voici une implémentation en 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;

Une possibilité:. Faites dessiné par le propriétaire, et la peinture manuellement le texte sur celui-ci si la propriété .Text est vide

Jetez un oeil à EM_SETCUEBANNER

Peut-être, mais pourquoi ne pas simplement mettre le texte par défaut et la couleur au besoin, et clair avec un événement « onClick »?

Vous n'avez pas besoin propriétaire tiré, il est natif avec apis utilisateur (bannière) Voir Winapi grp pour les échantillons (en C)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top