MFC 对话框设立背景颜色及控件透明的方法
大三实习给公司项目做UI优化,尼玛各种蛋疼问题都出来了,其中就有对话框设置背景色之后控件不透明的问题。
好不容易找到解决方法,贴出来分享一下。
1.对话框设置背景色:
方法1:(用OnPaint())
在Dlg.h中:声明 afx_msg void OnPaint();
HICON m_hIcon;
在Dlg中:在BEGIN_MESSAGE_MAP下:ON_WM_PAINT()
然后:void CHeaderDlg::OnPaint()
{
if (IsIconic())
{
...
}
else
{
CRect rect;
CPaintDC dc(this);
GetClientRect(rect);
dc.FillSolidRect(rect, RGB(179, 181, 193)); //背景色就在这里~
CDialog::OnPaint();
}
}
方法2:(WM_CTLCOLOR)
在XXDlg.头文件的protected:中加入CBrush m_brush;
在XXDlg.cpp文件中的OnInitDialog()初始化函数中加入画刷m_brush.CreateSolidBrush(RGB(255,255,255));RGB中的颜色自己定义。
然后在类向导中添加WM_CTLCOLOR消息函数。在里面只写一句话:return m_brush;
背景颜色就改了。
2.关于控件透明:
在上面方法2的基础之上,在OnCtlColor 里加一句:pDC->SetBkMode(TRANSPARENT); //透明背景!
就行了~