请问设置特定对话框背景颜色怎么设置?
哪位告诉我? 问题点数:20、回复次数:6Top
1 楼hanyufeng(寒雨丰)回复于 2005-08-04 03:17:04 得分 0
定义一个自己的画刷
然后在响应WM_CTLCOLOR的函数中,返回自己的画刷就可以了啊Top
2 楼alon21(Alon.飘一族)回复于 2005-08-04 08:38:50 得分 0
//改变对话框的背景颜色
方法一:
修改对话框的OnPaint,在else中添加如下代码
CPaintDC dc(this);
CRect rect;
GetClientRect(rect);
dc.FillSolidRect(rect, RGB(0,0,0));
CDialog::OnPaint();
方法二:
在对话框的应用类(App)的.cpp的Initinstance()中加入代码:
//加在int nResponse=dlg.DoModal();
前一个RGB设置背景色,第二个设置字体颜色
SetDialogBkColor(RGB(0,0,255),RGB(0,255,0));
方法三:
1.在对话框类中添加成员变量:
public:
CBrush m_brushBlue;
2.在对话框类的OnInitDialog()中添加代码:
m_brushBlue.CreateSolidBrush(RGB(0,0,255));
3.用ClassWizard在对话框类中添加成员函数OnCtlCollor(),并在其中添加代码:
if(nCtlColor==CTLCOLOR_DLG)
return m_brushBlue;
例: 动态改变背景色,不会将控件,工具条覆盖
//OnButton 中
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CBrush br;
br.CreateSolidBrush(RGB(0,255,0));
dc.FillRect(&rect,&br);
Top
3 楼laiyiling(陌生人[MVP])回复于 2005-08-04 08:39:42 得分 0
重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),即WM_CTLCOLOR消息。
---- ①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量:
class CExampleDlgDlg : public CDialog
{...
protected:
CBrush m_brush;
...
};
---- ②在OnInitDialog()函数中添加如下代码:
BOOL CExampleDlgDlg::OnInitDialog()
{
...
// TODO: Add extra initialization here
m_brush.CreateSolidBrush(RGB(0, 255, 0)); // 生成一绿色刷子
...
}
---- ③利用ClassWizard重载OnCtlColor(…),即WM_CTLCOLOR消息:
HBRUSH CExampleDlgDlg::OnCtlColor
(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
/*
** 这里不必编写任何代码!
**下行代码要注释掉
** HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
*/
return m_brush; //返加绿色刷子
}Top
4 楼xwolf1979(君)回复于 2005-08-04 10:36:28 得分 0
重载OnCtlColor (CDC* pDC, CWnd* pWnd, UINT nCtlColor),添加代码
if(nCtlColor == CTLCOLOR_DLG)
{
pDC->SetBkMode(TRANSPARENT);
HBRUSH b = CreateSolidBrush(RGB(*,*,*));
return (HBRUSH)b;
}Top
5 楼casinosun(去日苦多)回复于 2005-08-04 10:38:47 得分 0
同意上面在OnCtlColor写就行了Top
6 楼cdef9108()回复于 2005-08-04 20:52:10 得分 0
m_brushBlue.CreateSolidBrush(RGB(0,0,255));
应写道构造函数中,其他的写在OnCtlColor ,就可以了!!Top




