在视图中调用一个对话框,再改变对话框中一个控件的颜色,控件ID为:IDC_FOGCOLOR,鼠标单击该控件,弹出颜色对话框,选择颜色后把选择的颜色填充到这个控件上,代码如下:
void CEvnDlg::OnFogcolor()
{
// TODO: Add your control notification handler code here
CDC* dc;
CBrush* brush;
CRect rect; CColorDialog clrDlg;
clrDlg.m_cc.Flags|=CC_RGBINIT;
clrDlg.m_cc.rgbResult=m_color; if(IDOK==clrDlg.DoModal())
{
m_color=clrDlg.m_cc.rgbResult;
brush=new CBrush(m_color);
GetDlgItem(IDC_FOGCOLOR)->GetClientRect(&rect);
dc=GetDlgItem(IDC_FOGCOLOR)->GetDC();
dc->FillRect(&rect,brush);
}
GetDlgItem(IDC_FOGCOLOR)->ReleaseDC(dc);
delete brush;
}CEvnDlg为对话框类,m_color为CEvnDlg中类型为COLORREF的成员变量。
当这个对话框在主窗口之外时,控件颜色可以改变,当对话框覆盖在主窗口上时,控件颜色不变,总是灰色的,这是什么原因?怎么解决啊?请会的兄弟点拨点拨!
void CEvnDlg::OnFogcolor()
{
// TODO: Add your control notification handler code here
CDC* dc;
CBrush* brush;
CRect rect; CColorDialog clrDlg;
clrDlg.m_cc.Flags|=CC_RGBINIT;
clrDlg.m_cc.rgbResult=m_color; if(IDOK==clrDlg.DoModal())
{
m_color=clrDlg.m_cc.rgbResult;
brush=new CBrush(m_color);
GetDlgItem(IDC_FOGCOLOR)->GetClientRect(&rect);
dc=GetDlgItem(IDC_FOGCOLOR)->GetDC();
dc->FillRect(&rect,brush);
}
GetDlgItem(IDC_FOGCOLOR)->ReleaseDC(dc);
delete brush;
}CEvnDlg为对话框类,m_color为CEvnDlg中类型为COLORREF的成员变量。
当这个对话框在主窗口之外时,控件颜色可以改变,当对话框覆盖在主窗口上时,控件颜色不变,总是灰色的,这是什么原因?怎么解决啊?请会的兄弟点拨点拨!
是把代码放在WM_PAINT消息消息中吗?
:)