c'est par hasard que je suis tombé sur ton message,
je t'envoie ci dessous ,cru, la solution.
si tu n'arrive pas à la mettre en oueuvre, recontacte mois pour que je t'envoie l'exemple complet.
salut.
// InfoBulle.h : header file
//
#include "Couleurs.h" // ne contient que les RGB
/////////////////////////////////////////////////////////////////////////////
// CInfoBulle window
class CInfoBulle : public CStatic
{
// Construction
public:
CInfoBulle();
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CInfoBulle)
//}}AFX_VIRTUAL
// Implementation
public:
void SetTaille(int aTaille);
void SetPolice(CString aNomPolice);
void SetBkCoul(COLORREF acr);
void SetFgCoul(COLORREF acr);
virtual ~CInfoBulle();
// Generated message map functions
protected:
CFont m_Pol;
CBrush m_br;
COLORREF m_BkCoul;
COLORREF m_FgCoul;
//{{AFX_MSG(CInfoBulle)
afx_msg HBRUSH CtlColor(CDC* pDC, UINT nCtlColor);
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
// InfoBulle.cpp : implementation file
//
#include "stdafx.h"
#include "TestUn.h"
#include "InfoBulle.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CInfoBulle
CInfoBulle::CInfoBulle()
{
m_BkCoul=crJaune;//crNoir; .
m_FgCoul=crBleu;//crBlanc;
//m_br.CreateSolidBrush(m_BkCoul);
}
CInfoBulle::~CInfoBulle()
{
}
BEGIN_MESSAGE_MAP(CInfoBulle, CStatic)
//{{AFX_MSG_MAP(CInfoBulle)
ON_WM_CTLCOLOR_REFLECT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CInfoBulle message handlers
void CInfoBulle::SetFgCoul(COLORREF acr)
{
m_FgCoul=acr;
Invalidate();
}
void CInfoBulle::SetBkCoul(COLORREF acr)
{
m_BkCoul=acr;
Invalidate();
}
void CInfoBulle::SetPolice(CString aNomPolice)
{
static CFont *pF = GetFont();
LOGFONT logFont;
pF->GetLogFont(&logFont);
lstrcpy(logFont.lfFaceName, aNomPolice);
m_Pol.DeleteObject();
m_Pol.CreateFontIndirect(&logFont);
SetFont(&m_Pol);
}
void CInfoBulle::SetTaille(int aTaille)
{
CFont *pF = GetFont();
LOGFONT logFont; pF->GetLogFont(&logFont);
logFont.lfHeight = aTaille;
m_Pol.DeleteObject();
m_Pol.CreateFontIndirect(&logFont);
SetFont(&m_Pol);
}
HBRUSH CInfoBulle::CtlColor(CDC* pDC, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
// TODO: Return a non-NULL brush if the parent's handler should not be called
pDC->SetTextColor(m_FgCoul);
pDC->SetBkColor(m_BkCoul);
m_br.DeleteObject();
m_br.CreateSolidBrush(m_BkCoul);
//return CBrush(m_BkCoul);
return m_br;
//return NULL;
}