怎么避免UpdateData()函数弹出对话框
生活随笔
收集整理的這篇文章主要介紹了
怎么避免UpdateData()函数弹出对话框
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個Edit控件在關聯一個int 變量什么的時候,用UpdateData()函數跟新數據時,如果Edit上什么都它會彈出對話框來。。
?
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#!
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?
看起來挺丑的,怎么避免呢?一個就是用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#!
總結
以上是生活随笔為你收集整理的怎么避免UpdateData()函数弹出对话框的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用CAtlRegExp正则表达式检查浮
- 下一篇: CMFCTabCtrl 切换页面闪烁问题