关于空间背景颜色的操作

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;
}
View Code

我这里的一个示例是关于往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);否则不会是透明。

原文地址:https://www.cnblogs.com/cxiaoln/p/3531098.html