DWARRYVW.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // dwarryvw.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12. #include "stdafx.h"
  13. #include "collect.h"
  14. #include "colledoc.h"
  15. #include "dwarryvw.h"
  16. #ifdef _DEBUG
  17. #undef THIS_FILE
  18. static char BASED_CODE THIS_FILE[] = __FILE__;
  19. #endif
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CDWordArrayView
  22. IMPLEMENT_DYNCREATE(CDWordArrayView, CFormView)
  23. CDWordArrayView::CDWordArrayView()
  24. : CFormView(CDWordArrayView::IDD)
  25. {
  26. //{{AFX_DATA_INIT(CDWordArrayView)
  27. m_dw = 0;
  28. //}}AFX_DATA_INIT
  29. }
  30. CDWordArrayView::~CDWordArrayView()
  31. {
  32. }
  33. void CDWordArrayView::OnInitialUpdate()
  34. {
  35. CFormView::OnInitialUpdate();
  36. // Copy all of the DWORDs from the document's CDWordArray
  37. // to the listbox.
  38. m_ctlList.ResetContent();
  39. CDWordArray& dwArray = GetDocument()->m_dwArray;
  40. for (int nIndex = 0; nIndex < dwArray.GetSize(); nIndex++)
  41. {
  42. DWORD dw = dwArray[nIndex];
  43. CString str;
  44. str.Format(_T("%d"),dw);
  45. int nSel = m_ctlList.AddString(str);
  46. }
  47. }
  48. void CDWordArrayView::DoDataExchange(CDataExchange* pDX)
  49. {
  50. CFormView::DoDataExchange(pDX);
  51. //{{AFX_DATA_MAP(CDWordArrayView)
  52. DDX_Control(pDX, IDC_LIST, m_ctlList);
  53. DDX_Text(pDX, IDC_DWORD, m_dw);
  54. //}}AFX_DATA_MAP
  55. }
  56. BEGIN_MESSAGE_MAP(CDWordArrayView, CFormView)
  57. //{{AFX_MSG_MAP(CDWordArrayView)
  58. ON_BN_CLICKED(IDC_ADD, OnAdd)
  59. ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
  60. ON_BN_CLICKED(IDC_REMOVE, OnRemove)
  61. ON_BN_CLICKED(IDC_REMOVE_ALL, OnRemoveAll)
  62. ON_LBN_SELCHANGE(IDC_LIST, OnSelChangeList)
  63. //}}AFX_MSG_MAP
  64. END_MESSAGE_MAP()
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CDWordArrayView diagnostics
  67. #ifdef _DEBUG
  68. void CDWordArrayView::AssertValid() const
  69. {
  70. CFormView::AssertValid();
  71. }
  72. void CDWordArrayView::Dump(CDumpContext& dc) const
  73. {
  74. CFormView::Dump(dc);
  75. }
  76. CCollectDoc* CDWordArrayView::GetDocument() // non-debug version is inline
  77. {
  78. return STATIC_DOWNCAST(CCollectDoc, m_pDocument);
  79. }
  80. #endif //_DEBUG
  81. /////////////////////////////////////////////////////////////////////////////
  82. // CDWordArrayView message handlers
  83. void CDWordArrayView::OnAdd()
  84. {
  85. if (UpdateData() != TRUE)
  86. return;
  87. // Add new DWORD to the CDWordArray
  88. int nIndex = GetDocument()->m_dwArray.Add(m_dw);
  89. // Add new DWORD to the listbox.
  90. CString str;
  91. str.Format(_T("%d"),m_dw);
  92. int nSel = m_ctlList.AddString(str);
  93. // The index of the new DWORD in the array should be the
  94. // same as the index of the new DWORD in the listbox.
  95. ASSERT(nIndex == nSel);
  96. }
  97. void CDWordArrayView::OnUpdate()
  98. {
  99. if (UpdateData() != TRUE)
  100. return;
  101. int nSel = m_ctlList.GetCurSel();
  102. if (nSel == LB_ERR)
  103. {
  104. AfxMessageBox(IDS_SELECT_DWORD_TO_UPDATE);
  105. return;
  106. }
  107. // Replace the DWORD in the CDWordArray.
  108. GetDocument()->m_dwArray[nSel] = m_dw;
  109. // Update the old DWORD in the listbox by removing
  110. // the old entry and adding a new entry.
  111. m_ctlList.DeleteString(nSel);
  112. CString str;
  113. str.Format(_T("%d"),m_dw);
  114. m_ctlList.InsertString(nSel, str);
  115. }
  116. void CDWordArrayView::OnRemove()
  117. {
  118. if (UpdateData() != TRUE)
  119. return;
  120. int nSel = m_ctlList.GetCurSel();
  121. if (nSel == LB_ERR)
  122. {
  123. AfxMessageBox(IDS_SELECT_DWORD_TO_REMOVE);
  124. return;
  125. }
  126. // Remove the DWORD from the CDWordArray.
  127. GetDocument()->m_dwArray.RemoveAt(nSel);
  128. // Remove the DWORD from the listbox.
  129. m_ctlList.DeleteString(nSel);
  130. }
  131. void CDWordArrayView::OnRemoveAll()
  132. {
  133. // Remove all of the DWORDs from the CDWordArray.
  134. GetDocument()->m_dwArray.RemoveAll();
  135. // Remove all of the DWORDs from the listbox.
  136. m_ctlList.ResetContent();
  137. }
  138. void CDWordArrayView::OnSelChangeList()
  139. {
  140. // Update the edit control to reflect the new selection
  141. // in the listbox.
  142. m_dw = GetDocument()->m_dwArray[m_ctlList.GetCurSel()];
  143. UpdateData(FALSE);
  144. }