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 / chap06 / ekoala5 / koala.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-05-03  |  2.3 KB  |  88 lines

  1. /*
  2.  * KOALA.H
  3.  * Koala Object with Custom Marshaling, Chapter 6
  4.  *
  5.  * Classes that implement the CKoala object with a custom interface
  6.  * to demonstrate local/remote transparency.
  7.  *
  8.  * Copyright (c)1993-1995 Microsoft Corporation, All Right Reserved
  9.  *
  10.  * Kraig Brockschmidt, Microsoft
  11.  * Internet  :  kraigb@microsoft.com
  12.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  13.  */
  14.  
  15.  
  16. #ifndef _KOALA_H_
  17. #define _KOALA_H_
  18.  
  19. #define CHAPTER6
  20. #include <inole.h>
  21.  
  22.  
  23. /*
  24.  * Marshaling packet data structure as used by our IMarshal.
  25.  * This is duplicated in ..\koalaprx\koala.h.
  26.  */
  27. typedef struct
  28.     {
  29.     HWND        hWnd;       //Message window
  30.     } KOALAMARSHAL, *PKOALAMARSHAL;
  31.  
  32. //Intertask messages, duplicated in ..\koalaprx\koala.h.
  33. #define MSG_RELEASE             1000
  34. #define MSG_EAT                 1001
  35. #define MSG_SLEEP               1002
  36. #define MSG_PROCREATE           1003
  37. #define MSG_SLEEPAFTEREATING    1004
  38.  
  39.  
  40.  
  41. //KOALA.CPP
  42.  
  43. LRESULT APIENTRY ObjectWndProc(HWND, UINT, WPARAM, LPARAM);
  44.  
  45. class CKoala : public IMarshal
  46.     {
  47.     friend LRESULT APIENTRY KoalaWndProc(HWND, UINT, WPARAM, LPARAM);
  48.  
  49.     protected:
  50.         ULONG           m_cRef;         //Object reference count
  51.         PFNDESTROYED    m_pfnDestroy;   //To call on closure
  52.  
  53.         HWND            m_hWnd;         //For marshaling
  54.  
  55.         BOOL            m_fJustAte;
  56.         short           m_cSleepAfterEat;
  57.  
  58.     public:
  59.         CKoala(PFNDESTROYED);
  60.         ~CKoala(void);
  61.  
  62.         BOOL    Init(HINSTANCE, HWND);
  63.         DWORD   HandleCall(UINT, LPARAM);
  64.  
  65.         STDMETHODIMP QueryInterface(REFIID, LPVOID *);
  66.         STDMETHODIMP_(ULONG) AddRef(void);
  67.         STDMETHODIMP_(ULONG) Release(void);
  68.  
  69.         STDMETHODIMP GetUnmarshalClass(REFIID, LPVOID, DWORD
  70.             , LPVOID, DWORD, LPCLSID);
  71.         STDMETHODIMP GetMarshalSizeMax(REFIID, LPVOID, DWORD
  72.             , LPVOID, DWORD, LPDWORD);
  73.         STDMETHODIMP MarshalInterface(LPSTREAM, REFIID, LPVOID
  74.             , DWORD, LPVOID, DWORD);
  75.         STDMETHODIMP UnmarshalInterface(LPSTREAM, REFIID, LPVOID *);
  76.         STDMETHODIMP ReleaseMarshalData(LPSTREAM);
  77.         STDMETHODIMP DisconnectObject(DWORD);
  78.     };
  79.  
  80. typedef CKoala *PCKoala;
  81.  
  82.  
  83. #define CBOBJECTWNDEXTRA        sizeof(PCKoala)
  84. #define OBJECTWL_STRUCTURE      0
  85.  
  86.  
  87. #endif //_KOALA_H_
  88.