MFC中,为什么设置不了控件Groupbox的背景透明?该怎么处理
1个回答
展开全部
经过多次的测试,发现:
1、 直接拖一个控件到界面上,通过属性栏里设置Transparent的值为TRUE,可以实现我需要的效果。而且这个的Group Box背景和DLG一致。
2、属性栏里的Transparent值为FALSE。加入如下WM_CTLCOLOR消息代码处理,无效。
C/C++ codeif(nCtlColor == CTLCOLOR_STATIC) { pDC->SetBkMode(TRANSPARENT); return (HBRUSH)::GetStockObject(NULL_BRUSH); } 后修改下,修改后代码:
C/C++ codeif(nCtlColor == CTLCOLOR_DLG) { pDC->SetBkMode(TRANSPARENT); return (HBRUSH)::GetStockObject(NULL_BRUSH); } 想把DLG界面的背景透明掉,但是还是没成功,背景依然存在。
3、动态创建一个Group box控件,加入属性,代码如下。显示的效果还是达不到第一效果。
C/C++ codeCButton* btn = new CButton(); btn->Create("static",WS_EX_TRANSPARENT|BS_GROUPBOX/*|BS_NOTIFY*/|WS_VISIBLE|WS_CHILD, ret,this,533525); btn->ShowWindow(1); 见图,第一个Group box是在属性栏里设置 Transparent为TRUE的效果, 第二个Group box的Transparent值为FALSE,但是做了上面第2个方案处理了。但是效果就不能和第1个Group box效果一样了。
------解决方案-------------------------------------------------------- pDC->SetBkMode(TRANSPARENT);
只对“Static”标题内的区域有效,不是整个控件透明。
------解决方案--------------------------------------------------------可以设置.
C/C++ code if(pWnd->GetDlgCtrlID()==IDC_COM_SEX) { [color=#FF0000]pDC->SetBkMode(OPAQUE);[/color] pDC->SetBkColor(RGB(180,230,255)); return m_brush; }
------解决方案--------------------------------------------------------ModifyStyleEx().
------解决方案--------------------------------------------------------建议自绘
------解决方案--------------------------------------------------------我一般都是直接在背景上自己画了
大雅新科技有限公司
2024-11-19 广告
2024-11-19 广告
这方面更多更全面的信息其实可以找下大雅新。深圳市大雅新科技有限公司从事KVM延长器,DVI延长器,USB延长器,键盘鼠标延长器,双绞线视频传输器,VGA视频双绞线传输器,VGA延长器,VGA视频延长器,DVI KVM 切换器等,优质供应商,...
点击进入详情页
本回答由大雅新科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询