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;
...