home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / mfc / src / viewoled.cpp < prev    next >
C/C++ Source or Header  |  1998-06-16  |  3KB  |  133 lines

  1. // This is a part of the Microsoft Foundation Classes C++ library.
  2. // Copyright (C) 1992-1998 Microsoft Corporation
  3. // All rights reserved.
  4. //
  5. // This source code is only intended as a supplement to the
  6. // Microsoft Foundation Classes Reference and related
  7. // electronic documentation provided with the library.
  8. // See these sources for detailed information regarding the
  9. // Microsoft Foundation Classes product.
  10.  
  11. #include "stdafx.h"
  12. #include <afxoledb.h>
  13.  
  14. #ifdef AFX_CORE2_SEG
  15. #pragma code_seg(AFX_CORE2_SEG)
  16. #endif
  17.  
  18. #ifdef _DEBUG
  19. #undef THIS_FILE
  20. static char THIS_FILE[] = __FILE__;
  21. #endif
  22.  
  23. #define new DEBUG_NEW
  24.  
  25. /////////////////////////////////////////////////////////////////////////////
  26.  
  27. BEGIN_MESSAGE_MAP(COleDBRecordView, CFormView)
  28.     //{{AFX_MSG_MAP(COleDBRecordView)
  29.         // NOTE - the ClassWizard will add and remove mapping macros here.
  30.     //}}AFX_MSG_MAP
  31.     ON_COMMAND_EX(ID_RECORD_FIRST, OnMove)
  32.     ON_UPDATE_COMMAND_UI(ID_RECORD_FIRST, OnUpdateRecordFirst)
  33.     ON_COMMAND_EX(ID_RECORD_PREV, OnMove)
  34.     ON_UPDATE_COMMAND_UI(ID_RECORD_PREV, OnUpdateRecordPrev)
  35.     ON_COMMAND_EX(ID_RECORD_NEXT, OnMove)
  36.     ON_UPDATE_COMMAND_UI(ID_RECORD_NEXT, OnUpdateRecordNext)
  37.     ON_COMMAND_EX(ID_RECORD_LAST, OnMove)
  38.     ON_UPDATE_COMMAND_UI(ID_RECORD_LAST, OnUpdateRecordLast)
  39. END_MESSAGE_MAP()
  40.  
  41. void COleDBRecordView::OnInitialUpdate()
  42. {
  43.     CFormView::OnInitialUpdate();
  44. }
  45.  
  46. BOOL COleDBRecordView::OnMove(UINT nIDMoveCommand)
  47. {
  48.     CRowset* pSet = OnGetRowset();
  49.  
  50.     if (!UpdateData())
  51.         return TRUE;
  52.     pSet->SetData(0);
  53.  
  54.     HRESULT hr = E_UNEXPECTED;
  55.     switch (nIDMoveCommand)
  56.     {
  57.         case ID_RECORD_PREV:
  58.             hr = pSet->MovePrev();
  59.             if (hr != S_OK)
  60.                 m_bOnFirstRecord = TRUE;
  61.             else
  62.                 m_bOnLastRecord  = FALSE;
  63.             break;
  64.  
  65.         case ID_RECORD_FIRST:
  66.             hr = pSet->MoveFirst();
  67.             if (hr == S_OK)
  68.             {
  69.                 m_bOnFirstRecord = TRUE;
  70.                 m_bOnLastRecord  = FALSE;
  71.             }
  72.             break;
  73.  
  74.         case ID_RECORD_NEXT:
  75.             hr = pSet->MoveNext();
  76.             if (hr == S_OK)
  77.                 m_bOnFirstRecord = FALSE;
  78.             else
  79.                 m_bOnLastRecord  = TRUE;
  80.             break;
  81.  
  82.         case ID_RECORD_LAST:
  83.             hr = pSet->MoveLast();
  84.             if (hr == S_OK)
  85.             {
  86.                 m_bOnFirstRecord = FALSE;
  87.                 m_bOnLastRecord  = TRUE;
  88.             }
  89.             break;
  90.  
  91.         default:
  92.             // Unexpected case value
  93.             ASSERT(FALSE);
  94.     }
  95.  
  96.     if (hr != S_OK)
  97.         return FALSE;
  98.  
  99.     // Show results of move operation
  100.     UpdateData(FALSE);
  101.     return TRUE;
  102. }
  103.  
  104. void COleDBRecordView::OnUpdateRecordFirst(CCmdUI* pCmdUI)
  105. {
  106.     pCmdUI->Enable(!m_bOnFirstRecord);
  107. }
  108.  
  109. void COleDBRecordView::OnUpdateRecordPrev(CCmdUI* pCmdUI)
  110. {
  111.     pCmdUI->Enable(!m_bOnFirstRecord);
  112. }
  113.  
  114. void COleDBRecordView::OnUpdateRecordNext(CCmdUI* pCmdUI)
  115. {
  116.     pCmdUI->Enable(!m_bOnLastRecord);
  117. }
  118.  
  119. void COleDBRecordView::OnUpdateRecordLast(CCmdUI* pCmdUI)
  120. {
  121.     pCmdUI->Enable(!m_bOnLastRecord);
  122. }
  123.  
  124. //////////////////////////////////////////////////////////////////////////
  125.  
  126. #ifdef AFX_INIT_SEG
  127. #pragma code_seg(AFX_INIT_SEG)
  128. #endif
  129.  
  130. IMPLEMENT_DYNAMIC(COleDBRecordView, CFormView)
  131.  
  132. //////////////////////////////////////////////////////////////////////////
  133.