因为这个透明只是为了满足我自己的需求,并不是对广泛意义上的界面优化进行的。所以,先说一下这个透明化需求的具体情况,在一个加载图片做背景的对话框上,附加上非模态的子对话框,但是要保持背景的一致性。
按照正常的dlg.Create()生成的对话框的背景是那种灰灰的背景,在有图的背景上都是很丑的一块。
仔细的思考了一下,只要新附加的对话框没有自己的背景就完全可以实现。而这种情况最简单的情况就是不绘画背景。添加WM_ERASEBKGND()消息,并修改代码如下
BOOL CXXXDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
return TRUE;
//return CDialogEx::OnEraseBkgnd(pDC);
}
显示出来的效果就是下图,完全无区分。
对话框的透明就完成了,但是在对话框中加入一些控件之后,又出现了麻子一样的小块块。
这个时候就要进行控件的背景透明化了。实际上,在控件属性里面中有一栏说明是透明背景的属性。