Je souhaite définir du texte dans ma zone d'édition, mais il doit être grisé.Comment écrire du texte gris sur la boîte d'édition?
Y at-il un moyen de faire cela? Je ne suis pas en mesure de trouver l'API appropriée pour cela.
Des suggestions?
Je souhaite définir du texte dans ma zone d'édition, mais il doit être grisé.Comment écrire du texte gris sur la boîte d'édition?
Y at-il un moyen de faire cela? Je ne suis pas en mesure de trouver l'API appropriée pour cela.
Des suggestions?
Vous pourriez également être intéressé par le EM_SETCUEBANNER edit control message. Cela entraînera un contrôle d'édition pour afficher les directions en texte gris sans affecter l'entrée de l'utilisateur.
Répondez au WM_CTLCOLOREDIT message et utilisez SetTextColor sur le HDC transmis pour sélectionner la couleur du texte.
C'est d'une application MFC (d'où le pWnd), mais il est relativement facile de changer le code pur SDK:
HBRUSH CMyDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch (nCtlColor)
{
case CTLCOLOR_EDIT:
if (pWnd->GetDlgCtrlID() == IDC_MY_EDIT)
{
pDC->SetTextColor (COLOR_GRAYTEXT);
}
break;
default:
break;
}
return hbr;
}
Je viens de supposer que vous faites référence à l'API Win32. Si non, veuillez ignorer ma réponse ci-dessous.
Si vous souhaitez éditer/saisir du texte dans la zone d'édition en couleur grise ou une couleur différente, vous pouvez vous référer aux réponses ci-dessus qui vous indique comment surcharger OnCtlColor(). Mais si vous affichez simplement du texte dans une zone d'édition désactivée, le texte apparaîtra par défaut en gris (assurez-vous que la zone d'édition n'est pas en lecture seule pour pouvoir écrire dans le champ de saisie). Par exemple, si vous incluez les lignes ci-dessous dans votre méthode OnInit() de votre classe de dialogue, il désactivera votre editbox et afficher le texte en gris:
virtual void OnInit()
{
// Assuming IDC_MY_DISABLED_EDIT is the ID you entered for the editbox
// in the dialog designer.
// the above state will disable the edit box and display text in grey.
GetDlgCtrl(IDC_MY_DISABLED_EDIT)->EnabledWindow(FALSE);
// Hello World! will be displayed in grey.
GetDlgCtrl(IDC_MY_DISABLED_EDIT)->SetWindowText(_T("Hello World!"));
}
Vous voulez dire, texte ombré gris ou texte juste couleur gris ? – YOU
texte avec couleur grise. – anand