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 / objuser2 / objuser2.h < prev    next >
C/C++ Source or Header  |  1995-05-03  |  3KB  |  104 lines

  1. /*
  2.  * OBJUSER2.H
  3.  * Koala Client #2 Chapter 6
  4.  *
  5.  * Definitions and structures.
  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 _OBJUSER2_H_
  16. #define _OBJUSER2_H_
  17.  
  18. #define CHAPTER6
  19. #define INC_OLEUI
  20. #include <inole.h>
  21.  
  22. //Menu Resource ID and Commands
  23. #define IDR_MENU                    1
  24.  
  25.  
  26. #define IDM_OBJECTCREATE            100
  27. #define IDM_OBJECTGETCLASSID        101
  28. #define IDM_OBJECTRELEASE           102
  29. #define IDM_OBJECTEXIT              103
  30.  
  31.  
  32.  
  33. //OBJUSER.CPP
  34. LRESULT APIENTRY ObjectUserWndProc(HWND, UINT, WPARAM, LPARAM);
  35.  
  36. class CMessageFilter;
  37. typedef CMessageFilter *PCMessageFilter;
  38.  
  39. class CApp
  40.     {
  41.     friend LRESULT APIENTRY ObjectUserWndProc(HWND, UINT, WPARAM
  42.         , LPARAM);
  43.     friend class CMessageFilter;
  44.  
  45.     protected:
  46.         HINSTANCE       m_hInst;            //WinMain parameters
  47.         HINSTANCE       m_hInstPrev;
  48.         UINT            m_nCmdShow;
  49.  
  50.         HWND            m_hWnd;             //Main window handle
  51.  
  52.         LPUNKNOWN       m_pIUnknown;        //IUnknown interface
  53.         BOOL            m_fInitialized;     //Did CoInitialize work?
  54.  
  55.         PCMessageFilter m_pMsgFilter;       //Our message filter
  56.  
  57.     public:
  58.         CApp(HINSTANCE, HINSTANCE, UINT);
  59.         ~CApp(void);
  60.  
  61.         BOOL Init(void);
  62.         void Message(LPTSTR);
  63.     };
  64.  
  65. typedef CApp *PAPP;
  66.  
  67. #define CBWNDEXTRA              sizeof(PAPP)
  68. #define OBJUSERWL_STRUCTURE     0
  69.  
  70.  
  71. //Message Filter Object
  72.  
  73. class CMessageFilter : public IMessageFilter
  74.     {
  75.     protected:
  76.         ULONG           m_cRef;      //Object reference count
  77.         PAPP            m_pApp;
  78.         HWND            m_hDlg;      //Dialog handle
  79.  
  80.     private:
  81.         UINT    DisplayBusyDialog(HTASK, DWORD);
  82.  
  83.     public:
  84.         CMessageFilter(PAPP);
  85.         ~CMessageFilter(void);
  86.  
  87.         STDMETHODIMP QueryInterface(REFIID, LPVOID *);
  88.         STDMETHODIMP_(ULONG) AddRef(void);
  89.         STDMETHODIMP_(ULONG) Release(void);
  90.  
  91.         STDMETHODIMP_(DWORD) HandleInComingCall(DWORD, HTASK
  92.            #ifdef WIN32
  93.             , DWORD, LPINTERFACEINFO);
  94.            #else
  95.             , DWORD, DWORD);
  96.            #endif
  97.         STDMETHODIMP_(DWORD) RetryRejectedCall(HTASK, DWORD, DWORD);
  98.         STDMETHODIMP_(DWORD) MessagePending(HTASK, DWORD, DWORD);
  99.     };
  100.  
  101.  
  102.  
  103. #endif //_OBJUSER2_H_
  104.