对话框更换客户区背景以及设置客户区文本显示:
第一步:类向导-->消息-->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即可。
本文详细介绍了如何通过类向导、消息处理和CTLCOLOR函数来更换对话框的客户区背景颜色和文本颜色,包括设置自定义画刷、填充矩形区域、设置文字颜色等关键步骤,并提供了解决系统IDOK和IDCANCEL按钮显示问题的方法。
1542

被折叠的 条评论
为什么被折叠?



