MFC 对话框设立背景颜色及控件透明的方法

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); //透明背景!

就行了~