因重载了ONCTCOLOR造成文本框无法清空
重载OnCtlColor设置文本框的背景色以后,
HBRUSH CSTSAREPORTLIST::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: Ôڴ˸ü¸Ä DC µÄÈκÎÊôÐÔ
// TODO: Èç¹ûĬÈϵIJ»ÊÇËùÐ軱ʣ¬Ôò·µ»ØÁíÒ»¸ö»±Ê
if(nCtlColor==CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT);
return (HBRUSH)::GetStockObject(HOLLOW_BRUSH);
}
return hbr;
}
执行下面的方法以后
void CSTSAREPORTLIST::OnBnClickedBtnReportset()
{
this->m_pPaytimelist.DeleteAllItems();
this->GetDlgItem(IDC_EDIT_USERTIME)->SetWindowText(_T(""));
this->GetDlgItem(IDC_EDIT_PURCHASINGTIME)->SetWindowText(_T(""));
this->GetDlgItem(IDC_EDIT_FINANCETIME)->SetWindowText(_T(""));
this->GetDlgItem(IDC_STATIC_NUM)->SetWindowText(_T(""));
this->GetDlgItem(IDC_BEGIN_TIME)->EnableWindow(true);
this->GetDlgItem(IDC_END_TIME)->EnableWindow(true);
this->GetDlgItem(IDC_COM_ISSUETYPE)->EnableWindow(true);
this->GetDlgItem(IDC_BTN_REPORTQUERY)->EnableWindow(true);
this->GetDlgItem(IDC_BTN_EXPORT)->EnableWindow(false);
}
对话框无法清空了,怎么解决?
m_pPaytimelist.DeleteAllItems();
执行没问题,但是下面的
SetWindowText(_T(""));
就没有执行,造成字体叠加现象,请问各位高手如何解决?
当将OnCtlColor中的IF语句注释掉的时候,就可以清空,但是文本框那一块没有背景色,相当难看。
[解决办法]
因为你设置了透明了SetBkMode(TRANSPARENT);
你应该在SetWindowText之前,先强制刷新一下该区域InvalidateRect();然后再SetWindowText/SetDlgItemText();