一个Edit控件在关联一个int 变量什么的时候,用UpdateData()函数跟新数据时,如果Edit上什么都它会弹出对话框来。。
看起来挺丑的,怎么避免呢?一个就是用Get(Set)WindowText()函数更新数据,有的有这样的方法:
if(!UpDateData)
{
return ; //something
}
好像不很好,有时不方便,其实把它的变量改成CString 类型的也挺不错的,这样就不会乱弹了。。。
例如有:
Edit控件Number属性为TRUE,只能输入数字。。
1、h文件有
CString m_szDefaultZoomFactor;
int m_nDefaultZoomFactor;
2、CPP文件
在DoDataExchange时加点代码
void CPageMeasument::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT2, m_szDefaultZoomFactor);
//.....other code..........
m_szDefaultZoomFactor.Trim();
m_nDefaultZoomFactor = static_cast<int>(_tstoi((const wchar_t *)m_szDefaultZoomFactor.GetBuffer(0)));
//......other code......
}
在需要更新数据的地方。。。。。
void CPageMeasument::OnOK()
{
UpdateData(TRUE);
//......other code ......
if ((m_nDefaultZoomFactor <= 10) || (m_nDefaultZoomFactor > 2000 ) && (BST_CHECKED==((CButton*)GetDlgItem(IDC_CHECK5))->GetCheck()))
{
CRect rect;
GetDlgItem(IDC_EDIT2)->GetWindowRect(&rect);
CPoint pt = rect.CenterPoint(); pt.x = rect.right-15;
m_tooltip.SetDirection(PPTOOLTIP_LEFTEDGE_TOP);
if (0 == m_nDefaultZoomFactor) //这里就知道控件上是空的。。。
{
m_tooltip.ShowHelpTooltip(&pt, _T("<center><h2>Check input</h2><br><hr color=blue></center><br>Enter a value"));
}else{
m_tooltip.ShowHelpTooltip(&pt, _T("<center><h2>Check input</h2><br><hr color=blue></center><br>Enter default zoom(10-2000)"));
}
return ;
}
CPropertyPage::OnOK();
}
如图所示,控件为空时有检查,但不是弹出丑陋的AfxMessageBox对话框。。。。
我的QQ空间
http://user.qzone.qq.com/382164370/infocenter#!