添加对 WM_CTLCOLOR 消息的相应 函数 OnCtlColor。
代码如下:
HBRUSH CTemplate::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
// 修改对话框背景颜色
if(nCtlColor == CTLCOLOR_DLG)
{
// 创建画刷
CBrush bursh(RGB(255, 255, 255));
CRect rc;
GetClientRect(rc);
// 并使用画刷填充客户区
pDC->SelectObject(bursh);
pDC->FillRect(&rc, &bursh);
// 将画刷句柄返回
return bursh;
}
// 修改静态文本的背景为透明
if(nCtlColor == CTLCOLOR_STATIC)
{
// 将背景设为透明
pDC->SetBkMode(TRANSPARENT);
// 这里一定要设置为空画刷,否则字体还是有背景颜色。
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}