1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MFC学习之 对话框设置背景颜色及控件透明的方法

MFC学习之 对话框设置背景颜色及控件透明的方法

时间:2023-11-26 15:50:29

相关推荐

MFC学习之 对话框设置背景颜色及控件透明的方法

对话框设置背景色之后控件不透明的问题。

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_MSGBOX0

#define CTLCOLOR_EDIT 1

#define CTLCOLOR_LISTBOX2

#define CTLCOLOR_BTN 3

#define CTLCOLOR_DLG 4

#define CTLCOLOR_SCROLLBAR 5

#define CTLCOLOR_STATIC 6

#define CTLCOLOR_MAX7

其中:comobox = edit + list

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。