请教一个问题:经来看看这段代码!

newsark 2003-07-04 04:37:54
HBRUSH CMonitorSetDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here
if (pWnd->GetDlgCtrlID()==IDC_MONISTORSTATIC || pWnd->GetDlgCtrlID()==IDC_LANCHECK
|| pWnd->GetDlgCtrlID()==IDC_GROUPSTATIC || pWnd->GetDlgCtrlID()==IDC_STATIONSTATIC
|| pWnd->GetDlgCtrlID()==IDC_RTUCHECK || pWnd->GetDlgCtrlID()==IDC_REGUSTATIC
|| pWnd->GetDlgCtrlID()==IDC_YXCHECK)
{
pDC->SetBkColor(RGB(236, 233, 216));
}
// TODO: Return a different brush if the default is not desired
return hbr;
}

颜色并没有完全设置成对话框的背景色,还有一些边是默认的颜色,而且Check控件字和选择框之间也是默认颜色,没有完全把背景改掉,请问怎么做,才能完全把控件的背景色设置成对话框的背景色(也就是透明)?

...全文
23 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
athena521 2003-07-04
  • 打赏
  • 举报
回复
switch (nCtlColor) {

case CTLCOLOR_EDIT:

case CTLCOLOR_MSGBOX:

case CTLCOLOR_DLG :

case CTLCOLOR_EDIT : //在此加入你想要改变背景色的控件消息

pDC->SetBkMode(TRANSPARENT);

HBRUSH B = CreateSolidBrush(COLOR); //COLOR是你想设置的颜色

return (HBRUSH) B;

default: //其他控件设置自己默认的颜色和背景刷.

return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

yym314 2003-07-04
  • 打赏
  • 举报
回复
you can not return hbr!
you must create it yourself, then return it

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧