tab control中的一个属性页用相应OnCtlColor函数后出现的有关问题
tab control中的一个属性页用相应OnCtlColor函数后出现的问题
我有一个对话框程序,有一个tab control控件,里面有三个属性页,其中第一个属性页响应OnCtlColor函数改变其中控件的颜色,我再点击第二个属性页,再点回第一个属性页就会出错。第一个属性页的OnCtlColor代码如下
HBRUSH CLabel1::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
if ((pWnd-> GetDlgCtrlID() == IDC_GRAPH) && (nCtlColor == CTLCOLOR_STATIC))
{
COLORREF clr;
clr = RGB(255,255,255);
pDC-> SetBkColor(clr); //设置黑色的背景
m_brush.CreateSolidBrush(clr);
return m_brush; //作为约定,返回背景色对应的刷子句柄
}
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
------解决方案--------------------
我去,我明白了。这个m_brush只能Create一次,你这样相当于每次都Create,肯定有问题啊。
先加个判断,如果不为空,直接返回。否则再Create
我有一个对话框程序,有一个tab control控件,里面有三个属性页,其中第一个属性页响应OnCtlColor函数改变其中控件的颜色,我再点击第二个属性页,再点回第一个属性页就会出错。第一个属性页的OnCtlColor代码如下
HBRUSH CLabel1::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
// TODO: Return a different brush if the default is not desired
if ((pWnd-> GetDlgCtrlID() == IDC_GRAPH) && (nCtlColor == CTLCOLOR_STATIC))
{
COLORREF clr;
clr = RGB(255,255,255);
pDC-> SetBkColor(clr); //设置黑色的背景
m_brush.CreateSolidBrush(clr);
return m_brush; //作为约定,返回背景色对应的刷子句柄
}
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
return hbr;
}
------解决方案--------------------
我去,我明白了。这个m_brush只能Create一次,你这样相当于每次都Create,肯定有问题啊。
先加个判断,如果不为空,直接返回。否则再Create