modifier dynamiquement la couleur d'un CStatic
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:
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:
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...