OnCtlColor函数关于颜色调用的问题

OnCtlColor函数怎么保存CColorDiaog对话框设置的对话框?我不希望它每次都调用。谢谢

 void CApp2Dlg::OnButton1() 
{
    // TODO: Add your control notification handler code here
    CColorDialog colorDia;
     if (colorDia.DoModal() == IDOK)
     {
          m_color = colorDia.GetColor();
          GetDlgItem(IDC_STATIC_1)->InvalidateRect(NULL);
     }
}

HBRUSH CApp2Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    m_brush.CreateSolidBrush(m_color);
    // TODO: Change any attributes of the DC here
    UpdateData(TRUE);
    if (pWnd->GetDlgCtrlID() == IDC_STATIC_1)
    {
        pDC->SetBkColor(m_color);
        pDC->SetBkMode(OPAQUE);
        return m_brush;
    }

    UpdateData(FALSE);

    // TODO: Return a different brush if the default is not desired
    return hbr;
}

将 CColorDialog 的返回值保存在全局变量中,此全局变量给一个特殊的初始值就可以完成第一次调用颜色对话框。

头文件

 class CApp2Dlg : public CDialog
{
//加上
private: unsigned long m_color;
         CBrush m_brush;
...

图片说明