首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

因重载了ONCTCOLOR造成文本框无法清空,该如何解决

2012-03-11 
因重载了ONCTCOLOR造成文本框无法清空重载OnCtlColor设置文本框的背景色以后,HBRUSH CSTSAREPORTLIST::OnC

因重载了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();

热点排行