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

Windows编程

开发平台:

Visual C++

  1. // ObjOne.cpp : implementation file
  2. //
  3. // This is a part of the Active Template Library.
  4. // Copyright (C) 1996-1998 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Active Template Library Reference and related
  9. // electronic documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Active Template Library product.
  12. #include "premfcat.h"
  13. #include "MfcAtl.h"
  14. #include "ObjOne.h"
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CObjectOne
  22. IMPLEMENT_DYNCREATE(CObjectOne, CCmdTarget)
  23. CObjectOne::CObjectOne()
  24. {
  25. EnableAutomation();
  26. // To keep the application running as long as an OLE automation
  27. //  object is active, the constructor calls AfxOleLockApp.
  28. AfxOleLockApp();
  29. }
  30. CObjectOne::~CObjectOne()
  31. {
  32. // To terminate the application when all objects created with
  33. //  with OLE automation, the destructor calls AfxOleUnlockApp.
  34. AfxOleUnlockApp();
  35. }
  36. void CObjectOne::OnFinalRelease()
  37. {
  38. // When the last reference for an automation object is released
  39. // OnFinalRelease is called.  The base class will automatically
  40. // deletes the object.  Add additional cleanup required for your
  41. // object before calling the base class.
  42. CCmdTarget::OnFinalRelease();
  43. }
  44. BEGIN_MESSAGE_MAP(CObjectOne, CCmdTarget)
  45. //{{AFX_MSG_MAP(CObjectOne)
  46. // NOTE - the ClassWizard will add and remove mapping macros here.
  47. //}}AFX_MSG_MAP
  48. END_MESSAGE_MAP()
  49. BEGIN_DISPATCH_MAP(CObjectOne, CCmdTarget)
  50. //{{AFX_DISPATCH_MAP(CObjectOne)
  51. DISP_FUNCTION(CObjectOne, "SayHello", SayHello, VT_BSTR, VTS_NONE)
  52. //}}AFX_DISPATCH_MAP
  53. END_DISPATCH_MAP()
  54. // Note: we add support for IID_IObjectOne to support typesafe binding
  55. //  from VBA.  This IID must match the GUID that is attached to the
  56. //  dispinterface in the .ODL file.
  57. // {5D0CE84F-D909-11CF-91FC-00A0C903976F}
  58. static const IID IID_IObjectOne =
  59. { 0x5d0ce84f, 0xd909, 0x11cf, { 0x91, 0xfc, 0x0, 0xa0, 0xc9, 0x3, 0x97, 0x6f } };
  60. BEGIN_INTERFACE_MAP(CObjectOne, CCmdTarget)
  61. INTERFACE_PART(CObjectOne, IID_IObjectOne, Dispatch)
  62. END_INTERFACE_MAP()
  63. // {5D0CE850-D909-11CF-91FC-00A0C903976F}
  64. IMPLEMENT_OLECREATE(CObjectOne, "MfcAtl.ObjectOne", 0x5d0ce850, 0xd909, 0x11cf, 0x91, 0xfc, 0x0, 0xa0, 0xc9, 0x3, 0x97, 0x6f)
  65. /////////////////////////////////////////////////////////////////////////////
  66. // CObjectOne message handlers
  67. BSTR CObjectOne::SayHello()
  68. {
  69. return SysAllocString(OLESTR("Hello from Object One!"));
  70. }