一招悲痛莫名
2017-08-14 02:01
采纳率: 0%
浏览 3.3k

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

做了一个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条回答 默认 最新

  • 鼠小 2017-08-14 02:17

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

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

    评论
    解决 无用
    打赏 举报
  • Tsui丶 2017-08-14 03:16

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

    评论
    解决 无用
    打赏 举报
  • 微wx笑 2017-08-14 03:52

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题