对话框设置背景色之后控件不透明的问题。
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); //透明背景!
PS:或者
if(nCtlColor == CTLCOLOR_BTN)
{
pDC->SetTextColor(RGB(0, 0, 0));
pDC->SetBkColor(RGB(200, 200, 200));
buttonColor = CreateSolidBrush(RGB(200, 200, 200)); //背景颜色
return buttonColor;
}
else
{
pDC->SetBkMode(TRANSPARENT);
return m_brush;
}
就行了~ 头文件中声明 HBRUSH buttonColor;
一些参数:
#define CTLCOLOR_MSGBOX 0
#define CTLCOLOR_EDIT 1
#define CTLCOLOR_LISTBOX 2
#define CTLCOLOR_BTN 3
#define CTLCOLOR_DLG 4
#define CTLCOLOR_SCROLLBAR 5
#define CTLCOLOR_STATIC 6
#define CTLCOLOR_MAX 7
其中:comobox = edit + list