首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-05-09 
MFC中,为什么设置不了控件Groupbox的背景透明?新建一个DLG的测试项目,将DLG的属性 Clip Children设置为TRU

MFC中,为什么设置不了控件Groupbox的背景透明?
新建一个DLG的测试项目,将DLG的属性 Clip Children设置为TRUE,再在界面上拖放一个Group box控件,之后开始测试。

经过多次的测试,发现:
1、 直接拖一个控件到界面上,通过属性栏里设置Transparent的值为TRUE,可以实现我需要的效果。而且这个的Group Box背景和DLG一致。

2、属性栏里的Transparent值为FALSE。加入如下WM_CTLCOLOR消息代码处理,无效。

C/C++ code
if(nCtlColor == CTLCOLOR_STATIC)    {         pDC->SetBkMode(TRANSPARENT);         return   (HBRUSH)::GetStockObject(NULL_BRUSH);       }


后修改下,修改后代码:
C/C++ code
if(nCtlColor == CTLCOLOR_DLG)    {         pDC->SetBkMode(TRANSPARENT);         return   (HBRUSH)::GetStockObject(NULL_BRUSH);       }

想把DLG界面的背景透明掉,但是还是没成功,背景依然存在。

3、动态创建一个Group box控件,加入属性,代码如下。显示的效果还是达不到第一效果。
C/C++ code
CButton* 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().
[解决办法]
建议自绘

[解决办法]
我一般都是直接在背景上自己画了
这个种情况其实没必要费用group控件

热点排行