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 颜色? 怎么选择到背景颜色呀? 查了又查,还是没搞清楚,就来这里问问了...

解决方案 »

  1.   

    COrdersDlg 成员变量
    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