2010-01-22 8 views
0

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?

+0

Vous voulez dire, texte ombré gris ou texte juste couleur gris ? – YOU

+0

texte avec couleur grise. – anand

Répondre

0

Que diriez-vous de SetTextColor normal?

Par exemple,

SetTextColor(hdc, RGB(0xc0, 0xc0, 0xc0)); 
2

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.

2

Répondez au WM_CTLCOLOREDIT message et utilisez SetTextColor sur le HDC transmis pour sélectionner la couleur du texte.

0

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; 
} 
0

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!")); 
    } 
Questions connexes