Malgré une lecture des différentes sources et réponses sur le sujet, je n'arrive toujours pas à réaliser ce que je veux!
Je suis en train de faire une source générale sur les editbox, et je cherche à en changer les couleurs de texte et d'arrière-plan!
Cette source se voulant générale et intégrable dans de futures applications, je cherche à faire uniquement des fonctions que j'appelerai quand j'en aurais besoin!
Voici ma fonction de changement de couleur:
BOOL EDITChangeColor(t_edit edit, COLORREF back, COLORREF fore, BOOL VIEWERROR)
{
HDC hdcedit = GetDC(edit.handle);
if (SetBkColor(hdcedit, back) == CLR_INVALID)
{
if(VIEWERROR) EDITVoirErreur(GetLastError());
return FALSE;
}
if(SetTextColor(hdcedit, fore) == CLR_INVALID)
{
if(VIEWERROR) EDITVoirErreur(GetLastError());
return FALSE;
}
return TRUE;
}
typedef struct s_edit
{
HWND handle;
long id;
} t_edit;
Première erreur que je ne comprends pas, le HDC que je reçois n'est pas le meme que celui du wParam du message WM_CTLCOLOREDIT! (lecture des 2 et affichage dans un editbox à l'intérieur du case WM_CTLCOLOREDIT) Pourquoi et comment faire pour obtenir le bon HDC (autrement qu'en prenant le wParam puisque je ne veux pas passer le case WM_COLOREDIT!
Ensuite, je voudrais ne pas etre obligé d'appeler cette fonction dans WM_CTLCOLOREDIT, mais dans n'importequel autre fonction!
Par exemple par appui sur un bouton, ou par lecture d'une commande dans un fichier... Est-ce possible? Je pense que oui, mais je ne trouve pas comment! Il faut que j'integre les HBRUSH à la fonction, mais je ne sais pas où!
Savon