home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / com / inole2 / chap02 / reuse / animal.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-03  |  1.7 KB  |  72 lines

  1. /*
  2.  * ANIMAL.H
  3.  *
  4.  * Definition of the aggregatable CAnimal object.
  5.  * Included only from ANIMAL.CPP.
  6.  *
  7.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  8.  *
  9.  * Kraig Brockschmidt, Microsoft
  10.  * Internet  :  kraigb@microsoft.com
  11.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  12.  */
  13.  
  14.  
  15. #ifndef _ANIMAL_H_
  16. #define _ANIMAL_H_
  17.  
  18.  
  19. class CImpIAnimal_A;
  20. typedef CImpIAnimal_A *PCImpIAnimal_A;
  21.  
  22. class CAnimal : public IUnknown
  23.     {
  24.     friend CImpIAnimal_A;
  25.  
  26.     private:
  27.         DWORD           m_cRef;         //Object reference count
  28.         IUnknown       *m_pUnkOuter;    //Outer unknown, no AddRef
  29.  
  30.         PCImpIAnimal_A  m_pImpIAnimal;  //Interface implementation
  31.  
  32.     public:
  33.         CAnimal(IUnknown *);
  34.         ~CAnimal(void);
  35.  
  36.         BOOL Init(void);
  37.  
  38.         //IUnknown members, non-delegating
  39.         STDMETHODIMP         QueryInterface(REFIID, PPVOID);
  40.         STDMETHODIMP_(DWORD) AddRef(void);
  41.         STDMETHODIMP_(DWORD) Release(void);
  42.     };
  43.  
  44.  
  45. typedef CAnimal *PCAnimal;
  46.  
  47.  
  48. class CImpIAnimal_A : public IAnimal
  49.     {
  50.     private:
  51.         DWORD       m_cRef;         //For debugging
  52.         PCAnimal    m_pObj;         //Back pointer
  53.         IUnknown   *m_pUnkOuter;    //Outer unknown, for delegation
  54.  
  55.     public:
  56.         CImpIAnimal_A(PCAnimal, IUnknown *);
  57.         ~CImpIAnimal_A(void);
  58.  
  59.         //IUnknown members
  60.         STDMETHODIMP         QueryInterface(REFIID, PPVOID);
  61.         STDMETHODIMP_(DWORD) AddRef(void);
  62.         STDMETHODIMP_(DWORD) Release(void);
  63.  
  64.         //IAnimal members
  65.         STDMETHODIMP Eat(void);
  66.         STDMETHODIMP Sleep(void);
  67.         STDMETHODIMP Procreate(void);
  68.     };
  69.  
  70.  
  71. #endif _ANIMAL_H_
  72.