viewoled.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  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. #include "stdafx.h"
  11. #include <afxoledb.h>
  12. #ifdef AFX_CORE2_SEG
  13. #pragma code_seg(AFX_CORE2_SEG)
  14. #endif
  15. #ifdef _DEBUG
  16. #undef THIS_FILE
  17. static char THIS_FILE[] = __FILE__;
  18. #endif
  19. #define new DEBUG_NEW
  20. /////////////////////////////////////////////////////////////////////////////
  21. BEGIN_MESSAGE_MAP(COleDBRecordView, CFormView)
  22. //{{AFX_MSG_MAP(COleDBRecordView)
  23. // NOTE - the ClassWizard will add and remove mapping macros here.
  24. //}}AFX_MSG_MAP
  25. ON_COMMAND_EX(ID_RECORD_FIRST, OnMove)
  26. ON_UPDATE_COMMAND_UI(ID_RECORD_FIRST, OnUpdateRecordFirst)
  27. ON_COMMAND_EX(ID_RECORD_PREV, OnMove)
  28. ON_UPDATE_COMMAND_UI(ID_RECORD_PREV, OnUpdateRecordPrev)
  29. ON_COMMAND_EX(ID_RECORD_NEXT, OnMove)
  30. ON_UPDATE_COMMAND_UI(ID_RECORD_NEXT, OnUpdateRecordNext)
  31. ON_COMMAND_EX(ID_RECORD_LAST, OnMove)
  32. ON_UPDATE_COMMAND_UI(ID_RECORD_LAST, OnUpdateRecordLast)
  33. END_MESSAGE_MAP()
  34. void COleDBRecordView::OnInitialUpdate()
  35. {
  36. CFormView::OnInitialUpdate();
  37. }
  38. BOOL COleDBRecordView::OnMove(UINT nIDMoveCommand)
  39. {
  40. CRowset* pSet = OnGetRowset();
  41. if (!UpdateData())
  42. return TRUE;
  43. pSet->SetData(0);
  44. HRESULT hr = E_UNEXPECTED;
  45. switch (nIDMoveCommand)
  46. {
  47. case ID_RECORD_PREV:
  48. hr = pSet->MovePrev();
  49. if (hr != S_OK)
  50. m_bOnFirstRecord = TRUE;
  51. else
  52. m_bOnLastRecord = FALSE;
  53. break;
  54. case ID_RECORD_FIRST:
  55. hr = pSet->MoveFirst();
  56. if (hr == S_OK)
  57. {
  58. m_bOnFirstRecord = TRUE;
  59. m_bOnLastRecord = FALSE;
  60. }
  61. break;
  62. case ID_RECORD_NEXT:
  63. hr = pSet->MoveNext();
  64. if (hr == S_OK)
  65. m_bOnFirstRecord = FALSE;
  66. else
  67. m_bOnLastRecord = TRUE;
  68. break;
  69. case ID_RECORD_LAST:
  70. hr = pSet->MoveLast();
  71. if (hr == S_OK)
  72. {
  73. m_bOnFirstRecord = FALSE;
  74. m_bOnLastRecord = TRUE;
  75. }
  76. break;
  77. default:
  78. // Unexpected case value
  79. ASSERT(FALSE);
  80. }
  81. if (hr != S_OK)
  82. return FALSE;
  83. // Show results of move operation
  84. UpdateData(FALSE);
  85. return TRUE;
  86. }
  87. void COleDBRecordView::OnUpdateRecordFirst(CCmdUI* pCmdUI)
  88. {
  89. pCmdUI->Enable(!m_bOnFirstRecord);
  90. }
  91. void COleDBRecordView::OnUpdateRecordPrev(CCmdUI* pCmdUI)
  92. {
  93. pCmdUI->Enable(!m_bOnFirstRecord);
  94. }
  95. void COleDBRecordView::OnUpdateRecordNext(CCmdUI* pCmdUI)
  96. {
  97. pCmdUI->Enable(!m_bOnLastRecord);
  98. }
  99. void COleDBRecordView::OnUpdateRecordLast(CCmdUI* pCmdUI)
  100. {
  101. pCmdUI->Enable(!m_bOnLastRecord);
  102. }
  103. //////////////////////////////////////////////////////////////////////////
  104. #ifdef AFX_INIT_SEG
  105. #pragma code_seg(AFX_INIT_SEG)
  106. #endif
  107. IMPLEMENT_DYNAMIC(COleDBRecordView, CFormView)
  108. //////////////////////////////////////////////////////////////////////////