bonjour
avec les mfc(sous VC++6) je cherche à créé dans une boite de dialogue avec 3 edit text correspondant aux composantes RGB d'une couleur et un static affichant la couleur. Quand l'utilsateur modifie la valeur d'un edit je veux mettre à jour la couleur :
voila ce que j'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
BOOL CDlgColor::OnInitDialog() 
{
	CDialog::OnInitDialog();
 
	m_Spin_Red.SetRange(0,255);	
	m_Spin_Green.SetRange(0,255);	
	m_Spin_Blue.SetRange(0,255);
 
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
 
void CDlgColor::OnChangeEditColorRed() 
{
	UpdateColor();
}
 
void CDlgColor::OnChangeEditColorGreen() 
{
	UpdateColor();	
}
 
void CDlgColor::OnChangeEditColorBlue() 
{
	UpdateColor();	
}
 
void CDlgColor::UpdateColor()
{
 
}
 
void CDlgColor::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
 
	// TODO: Add your message handler code here
 
	// Do not call CDialog::OnPaint() for painting messages
}
j'ai essayer de placer ce bout de code dans initdialog et ma fonction updatecolor...(et un peu partout mais sans succes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
	CDC* dc = m_StaticColor.GetDC();
	CBrush lBrush;
	//recuperation des coordonnées du control de dessin
	CRect Rect;
	m_StaticColor.GetWindowRect(&Rect);
	m_StaticColor.ScreenToClient(&Rect);
 
	lBrush.CreateSolidBrush(RGB(r,g,b));
	dc->SelectObject(&lBrush);
	dc->FillRect(Rect,&lBrush);
 
	//Delete objet
	dc->DeleteDC();	
	lBrush.DeleteObject();
ce n'est peut etre pas une bonne methode ou y'a peut etre une methode plus simple? bref si quelqu'un peut me donner un coup de main, merci...