📄 valform.cpp
字号:
// valform.cpp//#include "stdafx.h"#include "valform.h"IMPLEMENT_DYNAMIC(CValidForm, CFormView)BEGIN_MESSAGE_MAP(CValidForm, CFormView) //{{AFX_MSG_MAP(CValidForm) ON_MESSAGE(WM_VALIDATE, OnValidate) //}}AFX_MSG_MAPEND_MESSAGE_MAP()CValidForm::CValidForm(UINT ID) : CFormView(ID){ TRACE("CValidForm ctor\n"); m_bValidationOn = TRUE; // turn validation on}void CValidForm::ValidateDlgItem(CDataExchange* pDX, UINT ID){ // return valid unless overridden in the form ASSERT(this); TRACE("CValidForm::ValidateDlgItem (should be overridden)\n"); return;}BOOL CValidForm::OnCommand(WPARAM wParam, LPARAM lParam) { // specific for WIN32 -- wParam/lParam processing different for WIN16 TRACE("CValidForm::OnCommand, wParam = %x, lParam = %x\n", wParam, lParam); TRACE("m_bValidationOn = %d\n", m_bValidationOn); if(m_bValidationOn) { // might be a killfocus UINT notificationCode = (UINT) HIWORD( wParam ); if((notificationCode == EN_KILLFOCUS) || (notificationCode == LBN_KILLFOCUS) || (notificationCode == CBN_KILLFOCUS) ) { CWnd* pFocus = CWnd::GetFocus(); // static function call // if we're changing focus to another control in the same form if( pFocus && (pFocus->GetParent() == this) ){ if(pFocus->GetDlgCtrlID() != IDCANCEL) { // and focus not in Cancel button // validate AFTER drawing finished BOOL rtn = PostMessage( WM_VALIDATE, wParam ); TRACE("posted message, rtn = %d\n", rtn); } } } } return CFormView::OnCommand(wParam, lParam); // pass it on}LONG CValidForm::OnValidate(UINT wParam, LONG lParam){ TRACE("Entering CValidForm::OnValidate\n"); CDataExchange dx(this, TRUE); m_bValidationOn = FALSE; // temporarily off UINT controlID = (UINT) LOWORD( wParam ); try { ValidateDlgItem(&dx, controlID); } catch(CUserException* pUE) { pUE->Delete(); TRACE("CValidForm caught the exception\n"); // fall through -- user already alerted via message box } m_bValidationOn = TRUE; return 0; // goes no further}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -