MFC-WM_CTLCOLOR消息绘制控件颜色

如果想改变控件的颜色,希望每个控件的颜色都不一样,可以利用WM_CTLCOLOR消息来绘制各个控件的颜色

例如:

HBRUSH CMFCTESTDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
    HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

    // TODO: 在此更改 DC 的任何特性

    // TODO: 如果默认的不是所需画笔,则返回另一个画笔

    switch (nCtlColor)
    {
    case CTLCOLOR_DLG://对话框颜色
        {
            HBRUSH brush = CreateSolidBrush(RGB(255, 0, 0));
            return brush;
        }
    case CTLCOLOR_EDIT:  //编辑框颜色
        {
            HBRUSH brush = CreateSolidBrush(RGB(255, 255, 0));
            return brush;
        }
    case CTLCOLOR_LISTBOX://列表框颜色
        {
            HBRUSH brush = CreateSolidBrush(RGB(0, 255, 0));
            return brush;
        }
    case CTLCOLOR_BTN:    //按钮颜色,还可以绘制字体颜色
        {
            HBRUSH brush = CreateSolidBrush(RGB(0, 0, 255));
            return brush;
        }
    default:  //还有很多.....
        break;
    }
    return hbr;
}

不仅仅可以用CreateSolidBrush来创建画刷,还可以用CreateHatchBrush来创建阴影画刷绘制控件,还可以用CreatePatternBrush来创建位图画刷绘制控件.

你可能感兴趣的:(mfc,控件,控件颜色,改变控件颜色)