1.在对话框类中添加成员变量:
public:
CBrush m_brushBlue;
2.在对话框类的OnInitDialog()中添加代码:
m_brushBlue.CreateSolidBrush(RGB(0,0,255));
3.用ClassWizard在对话框类中添加成员函数OnCtlCollor(),并在其中添加代码:
if(nCtlColor==CTLCOLOR_DLG)
return m_brushBlue; 然后我在按钮响应了函数:
CColorDialog dlg;
dlg.DoModal();然后怎么保存dlg对象选择 的 那个 RGB 颜色? 怎么选择到背景颜色呀? 查了又查,还是没搞清楚,就来这里问问了...
public:
CBrush m_brushBlue;
2.在对话框类的OnInitDialog()中添加代码:
m_brushBlue.CreateSolidBrush(RGB(0,0,255));
3.用ClassWizard在对话框类中添加成员函数OnCtlCollor(),并在其中添加代码:
if(nCtlColor==CTLCOLOR_DLG)
return m_brushBlue; 然后我在按钮响应了函数:
CColorDialog dlg;
dlg.DoModal();然后怎么保存dlg对象选择 的 那个 RGB 颜色? 怎么选择到背景颜色呀? 查了又查,还是没搞清楚,就来这里问问了...
HBRUSH m_hBKBrush;
COLORREF cf;
//设置背景色的按钮事件
void COrdersDlg::OnBnClickedBtnBackcolorset()
{
// TODO: 在此添加控件通知处理程序代码
CColorDialog cd;
if(cd.DoModal() == IDOK)
{
cf = cd.GetColor();
if(m_hBKBrush)
{
DeleteObject(m_hBKBrush);
m_hBKBrush = NULL;
}
this->Invalidate();//无限窗口,等待重绘
}
}
//重载WM_CTLCOLOR
HBRUSH COrdersDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{ // TODO: 在此更改 DC 的任何属性 // TODO: 如果默认的不是所需画笔,则返回另一个画笔
if(cf)
{
pDC->SetBkColor(cf);
m_hBKBrush = CreateSolidBrush(cf);
return m_hBKBrush;
}
else
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
}
参考教程
http://www.vckbase.com/bbs/prime/viewprime.asp?id=558