home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1996 December / PCWKCD1296.iso / vjplusb / activex / inetsdk / samples / axscript / spruuids / src / msgloop.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-15  |  3.5 KB  |  85 lines

  1. //---------------------------------------------------------------------------
  2. // MsgLoop.h
  3. //---------------------------------------------------------------------------
  4. // (C) Copyright 1995-1996 by Microsoft Corporation.  All rights reserved.
  5. //
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF 
  7. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
  8. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A 
  9. // PARTICULAR PURPOSE.
  10. //---------------------------------------------------------------------------
  11.  
  12.  
  13. //---------------------------------------------------------------------------
  14. // In we need to track per Component.
  15. //---------------------------------------------------------------------------
  16. typedef struct tagCOMP
  17.   {
  18.   IOleComponent *pcomp;
  19.   } COMP;
  20.  
  21. #define cCOMP     10
  22. #define icompNIL  0xffffffff
  23.  
  24.  
  25. //---------------------------------------------------------------------------
  26. //
  27. //---------------------------------------------------------------------------
  28. class CMsgLoop : public IOleComponentManager
  29.   {
  30. public:
  31.   // *** Constructor / Destructor ***
  32.   CMsgLoop(HWND hwnd);
  33.   virtual ~CMsgLoop();
  34.  
  35.   // *** IUnknown methods ***
  36.   STDMETHOD(QueryInterface)(REFIID riid, void **ppvObj);
  37.   STDMETHOD_(ULONG, AddRef)(void);
  38.   STDMETHOD_(ULONG, Release)(void);
  39.  
  40.   // *** IOleComponentManager Methods
  41.   STDMETHOD(QueryService)(REFGUID guidService, REFIID iid, void **ppvObj);
  42.   STDMETHOD_(BOOL, FRegisterComponent)(IOleComponent *piComponent, const CMGRRINFO *pcrinfo, DWORD *pdwComponentID);
  43.   STDMETHOD_(BOOL, FRevokeComponent)(DWORD dwComponentID);
  44.   STDMETHOD_(BOOL, FUpdateComponentRegistration)(DWORD dwComponentID, const CMGRRINFO *pcrinfo);
  45.   STDMETHOD_(void, OnComponentActivate)(DWORD dwComponentID);
  46.   STDMETHOD_(BOOL, FSetTrackingComponent)(DWORD dwComponentID, BOOL fTrack);
  47.   STDMETHOD_(void, OnComponentEnterState)(DWORD dwComponentID, ULONG uStateID, ULONG uContext, ULONG cpicmExclude, IOleComponentManager **rgpicmExclude, DWORD dwReserved);
  48.   STDMETHOD_(BOOL, FOnComponentExitState)(DWORD dwComponentID, ULONG uStateID, ULONG uContext, ULONG cpicmExclude, IOleComponentManager **rgpicmExclude);
  49.   STDMETHOD_(BOOL, FInState)(ULONG uStateID, void *pvoid);
  50.   STDMETHOD_(BOOL, FContinueIdle)(void);
  51.   STDMETHOD_(BOOL, FPushMessageLoop)(DWORD dwComponentID, ULONG uReason, void *pvLoopData);
  52.   STDMETHOD_(BOOL, FCreateSubComponentManager)(IUnknown *piunkOuter, IUnknown *piunkServProv, REFIID riid, void **ppvObj);
  53.   STDMETHOD_(BOOL, FGetParentComponentManager)(IOleComponentManager **ppicm);
  54.   STDMETHOD_(BOOL, FGetActiveComponent)(DWORD dwReserved, IOleComponent **ppic);
  55.  
  56.   // *** Implementation of FPushMessageLoop from IOleComponentManager
  57.   BOOL PumpMessage(DWORD icomp, ULONG uReason, void *pvLoopData);
  58.   void ProcessMessage(MSG *pmsg);
  59.   void MessageLoop(DWORD icomp, ULONG uReason, void *pvLoopData);
  60.   void DoIdleProcessing(void);
  61.   BOOL DoIdle(void);
  62.  
  63.   // *** Publicly available state ***
  64.   COMP   m_rgcomp[cCOMP]; // Array of components for our compmgr
  65.   DWORD  m_icompActive;
  66.   BOOL   m_fInState;
  67.   DWORD  m_icompState;
  68.   ULONG  m_uStateID;
  69.   BOOL   m_fScrptReset;
  70.   BOOL   m_fQuitting;
  71.   HWND   m_hwnd;
  72.   HACCEL m_haccel;
  73.  
  74. private:
  75.   ULONG m_cref;
  76.   ULONG m_cMsgLoop;
  77.   DWORD m_icompMsgLoop;
  78.  
  79.   // DEBUG info
  80.   #define SIG_MsgLoop 'MsgL'
  81.   DECLARE_SIGNATURE(SIG_MsgLoop);
  82.   };
  83.  
  84. //--- EOF -------------------------------------------------------------------
  85.