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 + -
显示快捷键?