- 首先定义消息宏
BEGIN_MESSAGE_MAP(CMyDialog, CBCGPDialog)
ON_WM_CTLCOLOR()
END_MESSAGE_MAP()
- 实现刷新函数
static void CMyDialog SetDrawColor(CDC* pDC, CWnd* pWnd, HBRUSH& hBrush);
void CMyDialog SetDrawColor(CDC* pDC, CWnd* pWnd, HBRUSH& hBrush)
{
COLORREF higlightColor = globalData.brHilite;
COLORREF backColor = globalData.clrWindow;
COLORREF textColor = globalData.clrWindowText;
pDC->SetTextColor(higlightColor);
pDC->SetBkColor(backColor);
hBrush = CreateSolidBrush(textColor);
}
- 实现消息函数
刷指定ID控件的背景颜色,CMyDlg2是一个继承CBCGPDialog的对话框类
OnCtlColor必须返回一个刷子句柄,该刷子将被用于画出控件的背景
HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nColor);
HBRUSH CMyDlg2::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nColor)
{
HBRUSH hBrush = CBCGPDialog::OnCtlColor(pDC, pWnd, nColor);
if (控件ID == nColor)
{
CBSDialogBase::DrawCtrlColor(pDC, pWnd, nColor, hBrush);
}
return hBrush;
}