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

Windows编程

开发平台:

Visual C++

  1. // DuckDoer.h : Declaration of the CDuckDoer
  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. #ifndef __DUCKDOER_H_
  13. #define __DUCKDOER_H_
  14. #include "resource.h"       // main symbols
  15. #include "cpduck.h"
  16. #include "duckdoerdlg.h"
  17. #include "atlduck.h"
  18. /////////////////////////////////////////////////////////////////////////////
  19. // CDuckDoer
  20. class ATL_NO_VTABLE CDuckDoer :
  21. public CComObjectRootEx<CComObjectThreadModel>,
  22. public CComCoClass<CDuckDoer, &CLSID_DuckDoer>,
  23. public CProxyIDuckInt<CDuckDoer>,
  24. public IConnectionPointContainerImpl<CDuckDoer>,
  25. public IDuckDoer
  26. {
  27. public:
  28. CDuckDoer()
  29. {
  30. // The dialog has to exist always before a duck doer object is created
  31. // because the dialog is created in tWinMain, which happens before
  32. // IClassFactory::CreateInstance.
  33. _ASSERT(m_pDlg != NULL);
  34. m_pDlg->SetOwner(this);
  35. m_bLocked = FALSE;
  36. }
  37. ~CDuckDoer()
  38. {
  39. if (m_pDlg != NULL)
  40. {
  41. m_pDlg->DestroyWindow();
  42. }
  43. }
  44. HRESULT FinalConstruct()
  45. {
  46. #ifdef _DEBUG
  47. _ASSERTE(AddRef() > 0);
  48. #else
  49. AddRef();
  50. #endif
  51. return S_OK;
  52. }
  53. DECLARE_REGISTRY_RESOURCEID(IDR_DUCKDOER)
  54. DECLARE_NOT_AGGREGATABLE(CDuckDoer)
  55. DECLARE_CLASSFACTORY_SINGLETON(CDuckDoer)
  56. public:
  57. STDMETHOD(Advise)(IUnknown* pUnk, DWORD* pdwCookie);
  58. STDMETHOD(Unadvise)(DWORD dwCookie);
  59. BEGIN_COM_MAP(CDuckDoer)
  60. COM_INTERFACE_ENTRY(IDuckDoer)
  61. COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
  62. END_COM_MAP()
  63. static CDuckDoerDlg* m_pDlg;
  64. BOOL m_bLocked;
  65. BEGIN_CONNECTION_POINT_MAP(CDuckDoer)
  66. CONNECTION_POINT_ENTRY(IID_IDuckInt)
  67. END_CONNECTION_POINT_MAP()
  68. // IDuckDoer
  69. };
  70. #endif //__DUCKDOER_H_