home *** CD-ROM | disk | FTP | other *** search
- // checkvw.cpp : implementation of the CCheckView class
- //
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1995 Microsoft Corporation
- // All rights reserved.
- //
- // This source code is only intended as a supplement to the
- // Microsoft Foundation Classes Reference and related
- // electronic documentation provided with the library.
- // See these sources for detailed information regarding the
- // Microsoft Foundation Classes product.
-
-
- #include "stdafx.h"
- #include "chkbook.h"
-
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
-
- IMPLEMENT_DYNCREATE(CCheckView, CFormView)
-
- BEGIN_MESSAGE_MAP(CCheckView, CFormView)
- //{{AFX_MSG_MAP(CCheckView)
- ON_COMMAND(ID_EDIT_COMMIT_CHECK, OnEditCommitCheck)
- ON_EN_CHANGE(IDC_AMOUNTNUM, OnAmountNumChange)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
-
- /////////////////////////////////////////////////////////////////////////////
- // Construction, destruction
-
- CCheckView::CCheckView()
- : CFormView(CCheckView::IDD)
- {
- //{{AFX_DATA_INIT(CCheckView)
- m_nCheckNo = 0;
- m_dwCents = 0;
- //}}AFX_DATA_INIT
- }
-
-
- CCheckView::~CCheckView()
- {
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // Operations
-
- void CCheckView::OnUpdate(CView*, LPARAM lHint, CObject* pHint)
- {
- // OnUpdate() is called whenever the document has changed and,
- // therefore, the view needs to redisplay some or all of itself.
-
- CChkBookDoc* pDoc = GetDocument();
- if (pDoc->GetRecordCount() == 0)
- return;
-
- if (DYNAMIC_DOWNCAST(CFixedLenRecHint, pHint) != NULL)
- {
- m_nCheckNo = LOWORD(lHint) + pDoc->GetFirstCheckNo();
- }
- else
- {
- m_nCheckNo = pDoc->GetActiveCheckNo();
- }
-
- GetDocument()->GetCheck(m_nCheckNo, m_dwCents, m_strPayTo,
- m_strDate, m_strMemo);
-
- UpdateData(FALSE); // Copy the view form object's data to the
- // controls (via DoDataExchange).
-
- Invalidate(); // Repaint the entire form view.
- }
-
-
- void CCheckView::DoDataExchange(CDataExchange* pDX)
- {
- // ClassWizard maintains mappings between data of the CCheckView
- // class and the controls in the dialog template resource for this
- // form view.
-
- //{{AFX_DATA_MAP(CCheckView)
- DDX_Text(pDX, IDC_CHECKNO, m_nCheckNo);
- DDX_Text(pDX, IDC_DATE, m_strDate);
- DDX_Text(pDX, IDC_MEMO, m_strMemo);
- DDX_Text(pDX, IDC_PAYTO, m_strPayTo);
- DDX_DollarsCents(pDX, IDC_AMOUNTNUM, m_dwCents);
- //}}AFX_DATA_MAP
-
- // Update the written-out dollars and cents (eg, "nineteen and
- // 98/100ths dollars") after loading or saving the numeric
- // dollars and cents control (IDC_AMOUNTNUM).
-
- CString str = GetDollarsCentsText(m_dwCents);
- GetDlgItem(IDC_AMOUNTTEXT)->SetWindowText(str);
- }
-
-
- BOOL CCheckView::MaybeCommitDirtyCheck()
- {
- // Ask the user to confirm the discarding of uncommitted changes
- // to the active check.
- // Return FALSE if the user wants to cancel the change-selection
- // command that would have discarded the uncommitted changes; and
- // set the focus
-
- DWORD dwCents;
- CString strPayTo, strDate, strMemo;
-
- // If there is a validation error, then let UpdateData()
- // return focus to the offending control.
- if (!UpdateData())
- return FALSE;
-
- CChkBookDoc* pDoc = GetDocument();
- ASSERT(m_nCheckNo == pDoc->GetActiveCheckNo());
- pDoc->GetCheck(m_nCheckNo, dwCents, strPayTo, strDate, strMemo);
- if ( (dwCents == m_dwCents)
- && (strPayTo == m_strPayTo)
- && (strDate == m_strDate)
- && (strMemo == m_strMemo))
- return TRUE;
-
- switch (AfxMessageBox(IDS_PROMPT_COMMIT_DIRTY_CHECK,
- MB_YESNOCANCEL))
- {
- case IDYES:
- pDoc->UpdateCheck(this, m_nCheckNo, m_dwCents,
- m_strPayTo, m_strDate, m_strMemo);
- return TRUE;
-
- case IDNO:
- return TRUE;
-
- case IDCANCEL:
- CMDIChildWnd* pChildWnd = (CMDIChildWnd*)GetParentFrame();
- pChildWnd->GetMDIFrame()->MDIActivate(pChildWnd);
- }
- return FALSE;
- }
-
- /////////////////////////////////////////////////////////////////////////////
- // CCheckView message handlers
-
-
- void CCheckView::OnEditCommitCheck()
- {
- // This handler is called when the user chooses the Edit Commit
- // Check menu command or toolbar button.
-
- // Copy dialog fields to the view object's data members.
- // If there are validation errors, then abandon the commit.
- if (!UpdateData())
- return;
-
-
- ASSERT(m_nCheckNo == GetDocument()->GetActiveCheckNo());
-
- // Update the document with the values entered by the user for
- // this check.
- GetDocument()->UpdateCheck(this, m_nCheckNo, m_dwCents, m_strPayTo,
- m_strDate, m_strMemo);
- }
-
-
- void CCheckView::OnAmountNumChange()
- {
- // When the dollar/cents amount numeric field (eg, "19.98") is changed
- // by the user, then update the dollar/cents text field
- // (eg, "Nineteen and 98/100ths Dollars").
-
- DWORD dwCents;
- CWnd* pCtlAmountText = GetDlgItem(IDC_AMOUNTTEXT);
- if (GetDollarsCents(GetDlgItem(IDC_AMOUNTNUM), dwCents))
- {
- CString str = GetDollarsCentsText(dwCents);
- pCtlAmountText->SetWindowText(str);
- }
- else
- {
- CString str;
- str.LoadString(IDS_UNKNOWN);
- pCtlAmountText->SetWindowText(str);
- }
- }
-