OnCtlColor 设置背景色和控件颜色不显示问题

时间:2021-11-18 19:15:47

HBRUSH StateMonitoring::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if (!pDC)
{
AfxMessageBox(L"指针为空");
return hbr;
}

// TODO:  Change any attributes of the DC here

// TODO:  Return a different brush if the default is not desired


if(nCtlColor==CTLCOLOR_BTN)          //更改按钮颜色

{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(197,209,217));

return bColor;

}

else if(nCtlColor==CTLCOLOR_SCROLLBAR)  //滚动条

{

//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(197,209,217));

return bColor;

}

else if(nCtlColor==CTLCOLOR_EDIT)   //更改编辑框

{
//pDC->SetBkMode(TRANSPARENT);

pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(197,209,217));

return bColor;
}
else if(nCtlColor==CTLCOLOR_LISTBOX )   //更改列表控件

{
//pDC->SetBkMode(TRANSPARENT);

pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(197,209,217));
return bColor;

}
else if(nCtlColor==CTLCOLOR_MSGBOX  )   //更改消息框

{
//pDC->SetBkMode(TRANSPARENT);

pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(197,209,217));

return bColor;

}

else if(nCtlColor==CTLCOLOR_STATIC)  //更改静态文本

{
pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(197,209,217));

return bColor;
}
else if(nCtlColor==CTLCOLOR_DLG)   //更改对话框背景色
{
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(197,209,217));

return bColor;

}
return hbr;
}

这是代码 bColor在构造函数中进行了赋值
bColor=CreateSolidBrush(RGB(197,209,217));
想问下 为啥一直进入OnCtlColor函数,并且我在win7 32机子上能成功运行并改变颜色,但是移植到win7 64机子上就不能显示背景和控件颜色,64位机也会进入OnCtlColor函数中 求大牛指点

5 个解决方案

#1


将win7的桌面方案改成经典windows看看

#2


引用 1 楼 lovesmiles 的回复:
将win7的桌面方案改成经典windows看看

就是经典window啊 ....

#3


求大牛 指点 ,

#4


只用 OnCtlColor 修改颜色是不太兼容的
还有其他东西要处理, 比如 WM_CTLCOLORSTATIC, WM_CTLCOLORBTN, WM_ERASEBKGND.......

#5


您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法

#1


将win7的桌面方案改成经典windows看看

#2


引用 1 楼 lovesmiles 的回复:
将win7的桌面方案改成经典windows看看

就是经典window啊 ....

#3


求大牛 指点 ,

#4


只用 OnCtlColor 修改颜色是不太兼容的
还有其他东西要处理, 比如 WM_CTLCOLORSTATIC, WM_CTLCOLORBTN, WM_ERASEBKGND.......

#5


您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了 疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面 界面版关于版主结帖工作的具体办法