MFC中,为什么设置不了控件Groupbox的背景透明?该怎么处理

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().------解决方案--------------------------------------------------------建议自绘------解决方案--------------------------------------------------------我一般都是直接在背景上自己画了

如果是可视化 *** 作,先加一控件,再拖放groupBox在其背后

如果动态创建控件,那就高度灵活,只要将其父控件理解成窗口,自然可以在该窗口中做任何东西,包括,再添加控件。

更多交流参考我空间文章发。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11381693.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存