DWARRYVW.CPP
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:4k
源码类别:
Windows编程
开发平台:
Visual C++
- // dwarryvw.cpp : implementation file
- //
- // This is a part of the Microsoft Foundation Classes C++ library.
- // Copyright (C) 1992-1998 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 "collect.h"
- #include "colledoc.h"
- #include "dwarryvw.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CDWordArrayView
- IMPLEMENT_DYNCREATE(CDWordArrayView, CFormView)
- CDWordArrayView::CDWordArrayView()
- : CFormView(CDWordArrayView::IDD)
- {
- //{{AFX_DATA_INIT(CDWordArrayView)
- m_dw = 0;
- //}}AFX_DATA_INIT
- }
- CDWordArrayView::~CDWordArrayView()
- {
- }
- void CDWordArrayView::OnInitialUpdate()
- {
- CFormView::OnInitialUpdate();
- // Copy all of the DWORDs from the document's CDWordArray
- // to the listbox.
- m_ctlList.ResetContent();
- CDWordArray& dwArray = GetDocument()->m_dwArray;
- for (int nIndex = 0; nIndex < dwArray.GetSize(); nIndex++)
- {
- DWORD dw = dwArray[nIndex];
- CString str;
- str.Format(_T("%d"),dw);
- int nSel = m_ctlList.AddString(str);
- }
- }
- void CDWordArrayView::DoDataExchange(CDataExchange* pDX)
- {
- CFormView::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CDWordArrayView)
- DDX_Control(pDX, IDC_LIST, m_ctlList);
- DDX_Text(pDX, IDC_DWORD, m_dw);
- //}}AFX_DATA_MAP
- }
- BEGIN_MESSAGE_MAP(CDWordArrayView, CFormView)
- //{{AFX_MSG_MAP(CDWordArrayView)
- ON_BN_CLICKED(IDC_ADD, OnAdd)
- ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
- ON_BN_CLICKED(IDC_REMOVE, OnRemove)
- ON_BN_CLICKED(IDC_REMOVE_ALL, OnRemoveAll)
- ON_LBN_SELCHANGE(IDC_LIST, OnSelChangeList)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CDWordArrayView diagnostics
- #ifdef _DEBUG
- void CDWordArrayView::AssertValid() const
- {
- CFormView::AssertValid();
- }
- void CDWordArrayView::Dump(CDumpContext& dc) const
- {
- CFormView::Dump(dc);
- }
- CCollectDoc* CDWordArrayView::GetDocument() // non-debug version is inline
- {
- return STATIC_DOWNCAST(CCollectDoc, m_pDocument);
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CDWordArrayView message handlers
- void CDWordArrayView::OnAdd()
- {
- if (UpdateData() != TRUE)
- return;
- // Add new DWORD to the CDWordArray
- int nIndex = GetDocument()->m_dwArray.Add(m_dw);
- // Add new DWORD to the listbox.
- CString str;
- str.Format(_T("%d"),m_dw);
- int nSel = m_ctlList.AddString(str);
- // The index of the new DWORD in the array should be the
- // same as the index of the new DWORD in the listbox.
- ASSERT(nIndex == nSel);
- }
- void CDWordArrayView::OnUpdate()
- {
- if (UpdateData() != TRUE)
- return;
- int nSel = m_ctlList.GetCurSel();
- if (nSel == LB_ERR)
- {
- AfxMessageBox(IDS_SELECT_DWORD_TO_UPDATE);
- return;
- }
- // Replace the DWORD in the CDWordArray.
- GetDocument()->m_dwArray[nSel] = m_dw;
- // Update the old DWORD in the listbox by removing
- // the old entry and adding a new entry.
- m_ctlList.DeleteString(nSel);
- CString str;
- str.Format(_T("%d"),m_dw);
- m_ctlList.InsertString(nSel, str);
- }
- void CDWordArrayView::OnRemove()
- {
- if (UpdateData() != TRUE)
- return;
- int nSel = m_ctlList.GetCurSel();
- if (nSel == LB_ERR)
- {
- AfxMessageBox(IDS_SELECT_DWORD_TO_REMOVE);
- return;
- }
- // Remove the DWORD from the CDWordArray.
- GetDocument()->m_dwArray.RemoveAt(nSel);
- // Remove the DWORD from the listbox.
- m_ctlList.DeleteString(nSel);
- }
- void CDWordArrayView::OnRemoveAll()
- {
- // Remove all of the DWORDs from the CDWordArray.
- GetDocument()->m_dwArray.RemoveAll();
- // Remove all of the DWORDs from the listbox.
- m_ctlList.ResetContent();
- }
- void CDWordArrayView::OnSelChangeList()
- {
- // Update the edit control to reflect the new selection
- // in the listbox.
- m_dw = GetDocument()->m_dwArray[m_ctlList.GetCurSel()];
- UpdateData(FALSE);
- }