HBRUSH CScheduleDialog::OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor ) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd->m_hWnd == GetDlgItem(IDC_STATICSCHEDULEINIT)->m_hWnd) { pDC->SetBkColor(354756); //pDC->SelectObject(&m_f) return m_brush; } return hbr; }
我这里的一个示例是关于往static text中添加背景颜色的。
首先,这里的OnCtlColor是继承dialog的,所以,这里重写该类即可。
在消息映射中,需要添加ON_WM_CTLCOLOR()
然后需要创建一个相应的画刷,m_brush.CreateSolidBrush(354756); 这个在OnInitDialog中
在OnCtlColor 中,可以进行修改背景色的同时,也可以修改字体等。也是通过pDC来操作即可。比如:pDC->SelectObject(&m_font); m_font.CreatePointFont(150,"华文行楷");
pDC->SetBkColor(m_u32Col);
如果要设置透明的背景则为:pDC->SetBkMode(TRANSPARENT); 函数返回要设置为:return (HBRUSH)::GetStockObject(NULL_BRUSH);否则不会是透明。