Couleur Editbox

c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005 - 29 déc. 2003 à 14:08
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 30 déc. 2003 à 20:24
Je veux changer la couleur de fond de mon editbox, voila le code que g réalisé mais ça ne fonctionne pas.
Si qqun c pkoi

merci

void CColorEd::SetBkColor(COLORREF crColor,CDC* pDC)
{
m_brBkgnd.DeleteObject();
m_brBkgnd.CreateSolidBrush(crColor);

pDC->SetBkMode(OPAQUE);
pDC->SetBkColor(crColor);
}
Cmill

15 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
29 déc. 2003 à 15:38
C'est la valeur de retour qui est importante je crois

tu traites le message WM_CTLCOLOREDIT (ou la fonction correspondante avec MFC) et a la fin de cette fonction:

return (BOOL) CreateSolidBrush(RGB(128, 0, 0));
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
29 déc. 2003 à 15:43
il faut que ma fonction SetBkColor retourne un BOOL. Mais qu'est-ce que j'en fais après de ce retour
Cmill
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 déc. 2003 à 16:30
On prepare le HBRUSH 1 seule fois avant de le retourner sinon on en cree un a chaque repaint avec fuites de memoire.
BruNews, ciao...
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
29 déc. 2003 à 16:43
Alors par exemple je peu le faire dans ma fonction ::OnInitialUpdate() ?
Cmill
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 déc. 2003 à 17:04
A la creation de ta fenetre.
A la sortie DeleteObject(hbr);
BruNews, ciao...
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
29 déc. 2003 à 17:14
Estce que tu pourrais me donner un exemple avec une formview
Cmill
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
29 déc. 2003 à 17:23
Jamais de MFC pour moi.
BruNews, ciao...
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
29 déc. 2003 à 17:39
G bien essayé de regarder dans ton code source mais g rien compri
Cmill
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
29 déc. 2003 à 17:40
Merci qd meme

Cmill
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
30 déc. 2003 à 15:28
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
30 déc. 2003 à 16:40
OK merci pour ta source j'ai compri mais je n'arrive pas a l'appliquer pour une appli SDI avec une CFormView
Cmill
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
30 déc. 2003 à 17:41
C'est exactement pareil!

HBRUSH CEditColorView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);

if(pWnd->m_hWnd == GetDlgItem(IDC_EDIT1)->m_hWnd)
return m_hBrush;

return hbr;
}
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 déc. 2003 à 17:46
alors vecchio, tu trouves encore que c'est plus simple que:
case WM_CTLCOLOREDIT:
return (BOOL) hbr;

BruNews, ciao...
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
30 déc. 2003 à 20:13
Non c'est sur, d'ailleurs je me suis suis un peu calmé en ce qui concerne MFC
Mai même en Win32 tu dois faire un truc du genre
if((HWND)lParam == GetDlgItem(..)
return (BOOL)hbr1;
return hbr2;
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
30 déc. 2003 à 20:24
juste un:
switch(GetWindowLong(...) suffira pour differencier 1000 EDITs.
BruNews, ciao...
0
Rejoignez-nous