对话框更换客户区背景以及设置客户区文本显示:
第一步:类向导-->消息-->CTLCOLOR-->添加处理程序-->编辑代码。
第二步:zai OnCtlColor函数中写,
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
if(nCtlColor==CTLCOLOR_DLG||nCtlColor==CTLCOLOR_STATIC)
{
CBrush brush; //重新定义画刷
brush.CreateSolidBrush(DLG_CLIENT_BACKGROUND_COLORREF);//指定画刷颜色
CRect rect;
GetClientRect(rect);//客户区矩形
pDC->SelectObject(&brush);//选择画刷
pDC->FillRect(rect,&brush);//填充矩形区
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(DLG_CLIENT_TEXT_COLORREF);//设置文字颜色
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return brush; //返回自定义画刷
}
return hbr;//返回系统画刷
第三步:
这种方式会导致系统的IDOK按钮和IDCANCEL按钮初始显示的时候看不到,鼠标移动过去刷新才可以,解决办法:删除系统的这两个控件自己添加BTN即可。