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

Windows编程

开发平台:

Visual C++

  1. // varassoc.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1995 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 "inproc.h"
  14. #include "varassoc.h"
  15. #ifdef _DEBUG
  16. #undef THIS_FILE
  17. static char BASED_CODE THIS_FILE[] = __FILE__;
  18. #endif
  19. /////////////////////////////////////////////////////////////////////////////
  20. // CVariantAssoc
  21. IMPLEMENT_DYNCREATE(CVariantAssoc, CCmdTarget)
  22. CVariantAssoc::CVariantAssoc()
  23. {
  24.     EnableAutomation();
  25.     // To keep the application running as long as an OLE automation 
  26.     //  object is active, the constructor calls AfxOleLockApp.
  27.     
  28.     AfxOleLockApp();
  29. }
  30. CVariantAssoc::~CVariantAssoc()
  31. {
  32.     // To terminate the application when all objects created with
  33.     //  with OLE automation, the destructor calls AfxOleUnlockApp.
  34.     
  35.     AfxOleUnlockApp();
  36. }
  37. void CVariantAssoc::OnFinalRelease()
  38. {
  39.     // When the last reference for an automation object is released
  40.     //  OnFinalRelease is called.  This implementation deletes the 
  41.     //  object.  Add additional cleanup required for your object before
  42.     //  deleting it from memory.
  43.     delete this;
  44. }
  45. BEGIN_MESSAGE_MAP(CVariantAssoc, CCmdTarget)
  46.     //{{AFX_MSG_MAP(CVariantAssoc)
  47.         // NOTE - the ClassWizard will add and remove mapping macros here.
  48.     //}}AFX_MSG_MAP
  49. END_MESSAGE_MAP()
  50. BEGIN_DISPATCH_MAP(CVariantAssoc, CCmdTarget)
  51.     //{{AFX_DISPATCH_MAP(CVariantAssoc)
  52.     DISP_PROPERTY_EX(CVariantAssoc, "Key", GetKey, SetNotSupported, VT_VARIANT)
  53.     DISP_PROPERTY_EX(CVariantAssoc, "Value", GetValue, SetNotSupported, VT_VARIANT)
  54.     //}}AFX_DISPATCH_MAP
  55. END_DISPATCH_MAP()
  56. // {84E099E0-F9F6-11cd-8C3D-00AA004BB3B7}
  57. static const IID IID_IVariantAssoc = { 0x84e099e0, 0xf9f6, 0x11cd, 
  58.     { 0x8c, 0x3d, 0x0, 0xaa, 0x0, 0x4b, 0xb3, 0xb7 } };
  59. // Note: we add support for IID_IVariantAssoc to support typesafe binding
  60. // from VBA.  This IID must match the GUID that is attached to the 
  61. // dispinterface in the .ODL file.
  62. BEGIN_INTERFACE_MAP(CVariantAssoc, CCmdTarget)
  63.     INTERFACE_PART(CVariantAssoc, IID_IVariantAssoc, Dispatch)
  64. END_INTERFACE_MAP()
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CVariantAssoc message handlers
  67. VARIANT CVariantAssoc::GetKey() 
  68. {
  69.     COleVariant varResult = m_varKey;
  70.     return varResult.Detach();
  71. }
  72. VARIANT CVariantAssoc::GetValue() 
  73. {
  74.     COleVariant varResult = m_varValue;
  75.     return varResult.Detach();
  76. }