Bonjour,
Ma question est surement redondante par rapport à ce qui a déjà été expliqué, mais je n'ai pas réussi à trouver mon bonheur, et je me place dans la section débutant afin d'obtenir des réponses précises claires...
Je programme sous Visual Studio 2005, en C++ et j'ai une fonction (sur un soft programmé par un ancien collègue de la boite) qui permet d'afficher un message dans un zone définie.
Cette fonction :
void CMesureCarterDlg::Message_Erreur_1(CString erreur_1)
{
m_erreur_1.SetWindowText(erreur_1);
}
Ce message, auparavant destiné à afficher des erreurs s'afficher en rouge grace à la fonction (La fonction mise en commentaire) :
#define defineOnCtlColor(classe, couleur_texte) \
HBRUSH classe::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) \
{ \
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); \
LOGBRUSH logBrush; \
\
m_bkBrush.GetLogBrush(&logBrush); \
\
switch ( nCtlColor ) \
{ \
\
case CTLCOLOR_EDIT: \
case CTLCOLOR_MSGBOX: \
case CTLCOLOR_STATIC: \
\
/*if ( (pWnd->GetDlgCtrlID() == m_erreur_1.GetDlgCtrlID()) \
|| (pWnd->GetDlgCtrlID() == m_erreur_2.GetDlgCtrlID()) \
|| (pWnd->GetDlgCtrlID() == m_erreur_3.GetDlgCtrlID())) \
pDC->SetTextColor(ERROR_COLOR); \
else*/ \
pDC->SetTextColor(couleur_texte); \
pDC->SetBkColor(logBrush.lbColor); \
\
return (HBRUSH)(m_bkBrush.GetSafeHandle());
A ce jour, je souhaiterai afficher différentes choses dans cette zone de texte, et avec des couleurs différentes.
Mon but étant de faire évoluer la fonction Message_Erreur en ajoutant une variable (de couleur), de cette manière :
void CMesureCarterDlg::Message_Erreur_2(CString erreur_2, CFont* color_2)
{
m_erreur_2.SetWindowText(erreur_2);
m_erreur_2.SetFont(color_2);
}
avec mes couleurs :
#define BLACK_COLOR RGB(0,0,0)
#define BLUE_COLOR RGB(0,128,192)
#define RED_COLOR RGB(255,0,0)
#define PINK_COLOR RGB(255, 190, 190)
#define GREEN_COLOR RGB(190, 255, 190)
#define GRAY_COLOR RGB(192, 192, 192)
#define YELLOW_COLOR RGB(255,255,0)
et une utilisation type :
Message_Erreur_2("AZ",GREEN_COLOR);
Or je n'y arrive pas :(
Pourriez vous m'orienter... Tout le monde parle de HDC, de CTLCOLORSTATIC, de SetTextColor, mais je n'y comprend pas grand chose...
Mes data_exchange, si cela peut vous aider :
DDX_Control(pDX, IDC_ERREUR_3, m_erreur_3);
DDX_Control(pDX, IDC_ERREUR_2, m_erreur_2);
DDX_Control(pDX, IDC_ERREUR_1, m_erreur_1);
D'avance merci...
Désolé si je m'étale ou vous en dit trop, mais je n'ai jamais trop programmé en C++ et la gestion des couleurs semble quand même assez Hard... (comparé à CVI ;) )
