IPDRIVW.CPP
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:6k
源码类别:
Windows编程
开发平台:
Visual C++
- // ipdrivw.cpp : implementation of the CDriverView 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 "ipdrive.h"
- #include "ipdridoc.h"
- #include "ipdrivw.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char BASED_CODE THIS_FILE[] = __FILE__;
- #endif
- /////////////////////////////////////////////////////////////////////////////
- // CDriverView
- IMPLEMENT_DYNCREATE(CDriverView, CFormView)
- BEGIN_MESSAGE_MAP(CDriverView, CFormView)
- //{{AFX_MSG_MAP(CDriverView)
- ON_BN_CLICKED(ID_LOOKUP, OnLookup)
- ON_BN_CLICKED(ID_REMOVE, OnRemove)
- ON_BN_CLICKED(ID_ADD, OnAdd)
- ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
- ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
- //}}AFX_MSG_MAP
- END_MESSAGE_MAP()
- /////////////////////////////////////////////////////////////////////////////
- // CDriverView construction/destruction
- CDriverView::CDriverView()
- : CFormView(CDriverView::IDD)
- {
- //{{AFX_DATA_INIT(CDriverView)
- // NOTE: the ClassWizard will add member initialization here
- //}}AFX_DATA_INIT
- m_bInitialized = FALSE;
- }
- CDriverView::~CDriverView()
- {
- }
- void CDriverView::DoDataExchange(CDataExchange* pDX)
- {
- CFormView::DoDataExchange(pDX);
- //{{AFX_DATA_MAP(CDriverView)
- DDX_Control(pDX, IDC_EDIT2, m_toValue);
- DDX_Control(pDX, IDC_COMBO3, m_toType);
- DDX_Control(pDX, IDC_EDIT1, m_ctrlValue);
- DDX_Control(pDX, IDC_COMBO2, m_ctrlType);
- //}}AFX_DATA_MAP
- }
- /////////////////////////////////////////////////////////////////////////////
- // CDriverView diagnostics
- #ifdef _DEBUG
- void CDriverView::AssertValid() const
- {
- CFormView::AssertValid();
- }
- void CDriverView::Dump(CDumpContext& dc) const
- {
- CFormView::Dump(dc);
- }
- CDriverDoc* CDriverView::GetDocument() // non-debug version is inline
- {
- return STATIC_DOWNCAST(CDriverDoc, m_pDocument);
- }
- #endif //_DEBUG
- /////////////////////////////////////////////////////////////////////////////
- // CDriverView message handlers
- void CDriverView::OnInitialUpdate()
- {
- GetParentFrame()->RecalcLayout();
- ResizeParentToFit(FALSE);
- CFormView::OnInitialUpdate();
- if (!m_bInitialized)
- {
- m_bInitialized = TRUE;
- GetDlgItem(IDC_CURRENT_COUNT)->GetWindowText(m_strCurrentCount);
- }
- // initialize the form
- m_ctrlType.SetCurSel(0);
- UpdateToNothing();
- }
- void CDriverView::UpdateToNothing()
- {
- UpdateCurrentCount();
- m_toType.SetCurSel(-1);
- CString str;
- str.LoadString(IDS_NOTHING);
- m_toValue.SetWindowText(str);
- }
- void CDriverView::UpdateCurrentCount()
- {
- CDriverDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- CString str;
- str.Format(m_strCurrentCount, pDoc->m_map->Count);
- SetDlgItemText(IDC_CURRENT_COUNT, str);
- }
- _variant_t CDriverView::GetFromVariant()
- {
- CString strValue;
- m_ctrlValue.GetWindowText(strValue);
- // we can just throw it in as a string, then coerce to chosen type
- _variant_t va = (LPCTSTR) strValue, vaTemp;
- try
- {
- vaTemp.ChangeType(max(0, m_ctrlType.GetCurSel()), &va);
- }
- catch (_com_error& e)
- {
- dump_com_error(e);
- AfxMessageBox(IDP_INCOMPATIBLE_TYPE_VALUE);
- }
- return vaTemp;
- }
- _variant_t CDriverView::GetToVariant()
- {
- CString strValue;
- m_toValue.GetWindowText(strValue);
- // we can just throw it in as a string, then coerce to chosen type
- _variant_t va = (LPCTSTR) strValue, vaTemp;
- try
- {
- vaTemp.ChangeType(max(0, m_toType.GetCurSel()), &va);
- }
- catch (_com_error& e)
- {
- dump_com_error(e);
- AfxMessageBox(IDP_INCOMPATIBLE_TYPE_VALUE);
- }
- return vaTemp;
- }
- void CDriverView::UpdateCurrentVariant(const _variant_t& va)
- {
- m_toType.SetCurSel(va.vt);
- _variant_t vaTemp;
- CString str;
- try
- {
- vaTemp.ChangeType(VT_BSTR, &va);
- str = (LPCTSTR) (_bstr_t) vaTemp;
- }
- catch (...)
- {
- str.LoadString(IDS_UNKNOWN);
- }
- m_toValue.SetWindowText(str);
- }
- void CDriverView::OnLookup()
- {
- CDriverDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- _variant_t vaFrom = GetFromVariant();
- _variant_t vaTo = pDoc->m_map->Item[vaFrom];
- UpdateCurrentVariant(vaTo);
- }
- void CDriverView::OnRemove()
- {
- CDriverDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- _variant_t vaFrom = GetFromVariant();
- pDoc->m_map->RemoveKey(vaFrom);
- UpdateToNothing();
- UpdateCurrentCount();
- }
- void CDriverView::OnAdd()
- {
- CDriverDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- _variant_t vaFrom = GetFromVariant();
- _variant_t vaTo = GetToVariant();
- pDoc->m_map->SetAt(vaFrom, vaTo);
- OnLookup();
- UpdateCurrentCount();
- }
- void CDriverView::OnButton1()
- {
- CDriverDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- long nCount = 0;
- DWORD dwThen = GetTickCount();
- if (GetKeyState(VK_CONTROL) >= 0)
- {
- while (GetTickCount() - dwThen < 5000)
- {
- pDoc->m_map->str1 = _T("Hello, World");
- ++nCount;
- }
- }
- else
- {
- while (GetTickCount() - dwThen < 5000)
- {
- pDoc->m_map->i1 = 1;
- ++nCount;
- }
- }
- CString str, strFormat;
- strFormat.LoadString(IDP_TIMING_RESULT);
- str.Format(strFormat, nCount);
- AfxMessageBox(str);
- }
- void CDriverView::OnButton2()
- {
- CDriverDoc* pDoc = GetDocument();
- ASSERT_VALID(pDoc);
- long nCount = 0;
- DWORD dwThen = GetTickCount();
- if (GetKeyState(VK_CONTROL) >= 0)
- {
- while (GetTickCount() - dwThen < 5000)
- {
- pDoc->m_map->str2 = _T("Hello, World");
- ++nCount;
- }
- }
- else
- {
- while (GetTickCount() - dwThen < 5000)
- {
- pDoc->m_map->i2 = 1;
- ++nCount;
- }
- }
- CString str, strFormat;
- strFormat.LoadString(IDP_TIMING_RESULT);
- str.Format(strFormat, nCount);
- AfxMessageBox(str);
- }