MFC文本编辑框背景设置透明,却变成了黑色背景,有没有MFC高手知道怎么破? 100C

做了一个MFC的Demo,目标是实现静态文本和编辑框的背景透明,思路是自定义继承自CStatic和CEdit的类,并重写其CtlColor函数来控制它的背景色,关键代码如下:
HBRUSH CEditTrans::CtlColor(CDC* pDC, UINT nCtlColor)
{
m_Brush.CreateStockObject(HOLLOW_BRUSH);
pDC->SetBkMode(TRANSPARENT);

return (HBRUSH)m_Brush;

}
结果发现同样用这种方法,静态文本的背景能实现透明,编辑框背景仍然是白色,鼠标移动到编辑框上面,编辑框变成了黑色。效果图如下:
静态文本:
图片说明
编辑框:
图片说明
鼠标悬停后:
图片说明
有没有MFC老司机知道这个怎么解决?

3个回答

看看这个帖子,应该能帮到你

http://bbs.csdn.net/topics/390401008?page=1

qq_26164563
一招悲痛莫名 谢谢你的回答,不过这个帖子,它只能实现静态文本的背景透明
接近 3 年之前 回复

编辑框是透明了,但是因为编辑框后面是对话框,而对话框虽然是白色的,但是对话框刷新背景时只刷新没有编辑框的部分,所以编辑框覆盖的那块对话框没有刷新,当然是黑色的。
这说明你编辑框的确有透明掉,但你刷新背景时应该整个对话框都刷新

qq_26164563
一招悲痛莫名 刷新背景应该是在父类刷新的,我想实现在自己的代码中完成让控件透明的工作,便于移植,有办法吗
接近 3 年之前 回复

只是把背景设为透明是不行的。参考:http://blog.csdn.net/wwkaven/article/details/40613821

qq_26164563
一招悲痛莫名 似乎也不行啊
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐