validview.cpp
来自「讲mfc的书」· C++ 代码 · 共 128 行
CPP
128 行
// validView.cpp : implementation of the CValidView class
//
#include "stdafx.h"
#include "valid.h"
#include "validDoc.h"
#include "validView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CValidView
IMPLEMENT_DYNCREATE(CValidView, CFormView)
// Class Wizard won't put this here because it thinks
// Dialog boxes handle OnOK. They do, but this is a
// form view, not a dialog box
BEGIN_MESSAGE_MAP(CValidView, CFormView)
//{{AFX_MSG_MAP(CValidView)
ON_COMMAND(IDOK,OnOK)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CValidView construction/destruction
CValidView::CValidView()
: CFormView(CValidView::IDD)
{
validating=FALSE;
vid=0;
//{{AFX_DATA_INIT(CValidView)
m_age = 18;
m_name = _T("");
m_wager = 1.0f;
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CValidView::~CValidView()
{
}
void CValidView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
validating=TRUE; // prevent recursion
// moved these out of class wizard comments and changed them
try
{
if (!vid||vid==IDC_AGE) DDX_Text(pDX, IDC_AGE, m_age);
if (!vid||vid==IDC_AGE) DDV_MinMaxInt(pDX, m_age, 18, 150);
if (!vid||vid==IDC_NAME) DDX_Text(pDX, IDC_NAME, m_name);
if (!vid||vid==IDC_NAME) DDV_MaxChars(pDX, m_name, 64);
if (!vid||vid==IDC_WAGER) DDX_Text(pDX, IDC_WAGER, m_wager);
if (!vid||vid==IDC_WAGER) DDV_MinMaxFloat(pDX, m_wager, 1.f, 100.f);
//{{AFX_DATA_MAP(CValidView)
//}}AFX_DATA_MAP
validating=FALSE;
}
catch (...)
{
validating=FALSE; // make sure this is clear
throw; // go ahead
}
}
BOOL CValidView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CValidView diagnostics
#ifdef _DEBUG
void CValidView::AssertValid() const
{
CFormView::AssertValid();
}
void CValidView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CValidDoc* CValidView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CValidDoc)));
return (CValidDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CValidView message handlers
void CValidView::OnOK()
{
if (UpdateData(TRUE))
MessageBox("Wager placed");
}
BOOL CValidView::OnCommand(WPARAM wParam, LPARAM lParam)
{
if (HIWORD(wParam)==EN_KILLFOCUS&&!validating)
{
vid=LOWORD(wParam);
UpdateData(TRUE);
// reset conditions
// You'd need to do the line below if you don't catch
// exceptions in DoDataExchange
// validating=FALSE;
vid=0;
}
return CFormView::OnCommand(wParam, lParam);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?