Pouvez-vous modifier l'arrière-plan du texte dans la zone de contrôle d'édition qui resterait statique?Modification de l'arrière-plan du texte dans le contrôle d'édition
Répondre
Dans le parent du contrôle d'édition, gérer le message WM_CTLCOLORSTATIC, le wParam de ce message est le HDC sur lequel le contrôle Edit est sur le point de dessiner, pour la plupart des messages CTLCOLOR, si vous définissez des couleurs de texte et d'arrière-plan dans ce DC, le contrôle utilisera les couleurs que vous définissez.
Vous pouvez également retourner un HBRUSH et le contrôle l'utilisera pour toute peinture au pinceau qu'il fera, mais de nombreuses commandes n'utilisent pas beaucoup de brosses, ce qui aura un effet limité sur certains messages CTLOLOLOR . Votre meilleur pari ici est de renvoyer la brosse DC, et régler la couleur DC Brush pour correspondre à la BkColor du DC.
LRESULT lRet = 0; // return value for our WindowProc.
COLORREF crBk = RGB(255,0,0); // use RED for Background.
...
case WM_CTLCOLORSTATIC:
{
HDC hdc = (HDC)wParam;
HWND hwnd = (HWND)lParam;
// if multiple edits and only one should be colored, use
// the control id to tell them apart.
//
if (GetDlgCtrlId(hwnd) == IDC_EDIT_RECOLOR)
{
SetBkColor(hdc, crBk); // Set to red
SetDCBrushColor(hdc, crBk);
lRet = (LRESULT) GetStockObject(DC_BRUSH); // return a DC brush.
}
else
{
lRet = DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}
break;
WM_CTLCOLOREDIT vous permet de définir le texte et la couleur d'arrière-plan (+ brosse), si vous voulez plus de contrôle que cela, vous devez sous-classe et vous peindre
WM_CTLCOLORSTATIC est pour le contrôle de texte statique.
Pour être simple, vous pouvez le faire dans votre WinProc:
...
case WM_CTLCOLOREDIT:
{
HDC hdc = (HDC)wParam;
SetTextColor(hdc, yourColor); // yourColor is a WORD and it's format is 0x00BBGGRR
return (LRESULT) GetStockObject(DC_BRUSH); // return a DC brush.
}
...
Si vous avez plus de 1 contrôle d'édition, vous pouvez utiliser l'identifiant de l'article et lParam pour vérifier que l'on a besoin d'être changé.
vous pourriez faire quelque chose comme ceci:
CBrush bkBrush;
RECT ctrlRect;
COLORREF crBk = RGB(255,0,0); // Red color
bkBrush.CreateSolidBrush(crBk);
CWnd* pDlg = CWnd::GetDlgItem(IDC_EDIT);
pDlg->GetClientRect(&ctrlRect);
pDlg->GetWindowDC()->FillRect(&ctrlRec, &bkBrush);
pDlg->GetWindowDC()->SetBkColor(crBk);
Cela devrait changer la couleur d'arrière-plan du contrôle de modifier
- 1. Modification du texte du contrôle de la zone de texte d'une fenêtre
- 2. Modification du texte de clabel dans Matplotlib
- 3. Rechercher du texte dans le contrôle webbrowser
- 4. Powershell: modification du texte
- 5. Modification de la couleur du texte dans un calendrier WPF?
- 6. Modification du texte de validation-texte du fichier de ressources
- 7. Suppression/modification du texte recherché dans Vim
- 8. Modification de l'agent utilisateur du contrôle WebBrowser
- 9. Modification de l'arrière-plan du titre et de l'en-tête dans le contrôle du pivot
- 10. Chargement du texte de la mémoire dans le contrôle WebBrowser
- 11. Modification du texte d'un bouton simple DevExpress
- 12. Modification du contrôle de version dans IntelliJ IDEA
- 13. Personnalisation du texte sur le contrôle Spinner
- 14. Modification dynamique du texte de l'icône de l'application dans Android
- 15. Modification de l'origine du bloc de texte dans WPF
- 16. Modification de texte dans RaphaelJS
- 17. Coller un texte dans une zone de texte dans le contrôle du navigateur dans Vb.Net
- 18. Déclencheurs de données WPF et modification du style du contrôle
- 19. Modification du bouton AcceptButton en fonction du contrôle actif
- 20. Modification du texte dans un UITextView au moment de l'exécution
- 21. Modification de la couleur du texte dans UINavigationBar
- 22. Cocoa contrôle l'emplacement du texte?
- 23. Modification du texte d'un commutateur UIS
- 24. Contrôle du correcteur d'orthographe de la zone de texte Asp.Net
- 25. Modification de la disposition de contrôle de connexion dans le contrôle personnalisé
- 26. Modification du crénage dans System.Drawing.Graphics.DrawString()
- 27. Récupération du texte sélectionné du contrôle Webbrowser dans .net (C#)
- 28. Autosize pour le texte dans le modèle de contrôle
- 29. Contrôle de bouton d'option Infopath - modification du nombre de boutons
- 30. Définition du contenu de TextBlock et du texte de HyperlinkButton dans le contrôle personnalisé silverlight
'WM_CTLCOLORSTATIC' est aussi pour les contrôles d'édition en lecture seule. – 0xC0000022L