做了一个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老司机知道这个怎么解决?