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

Windows编程

开发平台:

Visual C++

  1. //---------------------------------------------------------------------------
  2. // MsgLoop.h
  3. //---------------------------------------------------------------------------
  4. // (C) Copyright 1995-1997 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. // In we need to track per Component.
  13. //---------------------------------------------------------------------------
  14. typedef struct tagCOMP
  15.   {
  16.   IOleComponent *pcomp;
  17.   } COMP;
  18. #define cCOMP     10
  19. #define icompNIL  0xffffffff
  20. //---------------------------------------------------------------------------
  21. //
  22. //---------------------------------------------------------------------------
  23. class CMsgLoop : public IOleComponentManager
  24.   {
  25. public:
  26.   // *** Constructor / Destructor ***
  27.   CMsgLoop(HWND hwnd);
  28.   virtual ~CMsgLoop();
  29.   // *** IUnknown methods ***
  30.   STDMETHOD(QueryInterface)(REFIID riid, void **ppvObj);
  31.   STDMETHOD_(ULONG, AddRef)(void);
  32.   STDMETHOD_(ULONG, Release)(void);
  33.   // *** IOleComponentManager Methods
  34.   STDMETHOD(QueryService)(REFGUID guidService, REFIID iid, void **ppvObj);
  35.   STDMETHOD_(BOOL, FRegisterComponent)(IOleComponent *piComponent, const CMGRRINFO *pcrinfo, DWORD *pdwComponentID);
  36.   STDMETHOD_(BOOL, FRevokeComponent)(DWORD dwComponentID);
  37.   STDMETHOD_(BOOL, FUpdateComponentRegistration)(DWORD dwComponentID, const CMGRRINFO *pcrinfo);
  38.   STDMETHOD_(void, OnComponentActivate)(DWORD dwComponentID);
  39.   STDMETHOD_(BOOL, FSetTrackingComponent)(DWORD dwComponentID, BOOL fTrack);
  40.   STDMETHOD_(void, OnComponentEnterState)(DWORD dwComponentID, ULONG uStateID, ULONG uContext, ULONG cpicmExclude, IOleComponentManager **rgpicmExclude, DWORD dwReserved);
  41.   STDMETHOD_(BOOL, FOnComponentExitState)(DWORD dwComponentID, ULONG uStateID, ULONG uContext, ULONG cpicmExclude, IOleComponentManager **rgpicmExclude);
  42.   STDMETHOD_(BOOL, FInState)(ULONG uStateID, void *pvoid);
  43.   STDMETHOD_(BOOL, FContinueIdle)(void);
  44.   STDMETHOD_(BOOL, FPushMessageLoop)(DWORD dwComponentID, ULONG uReason, void *pvLoopData);
  45.   STDMETHOD_(BOOL, FCreateSubComponentManager)(IUnknown *piunkOuter, IUnknown *piunkServProv, REFIID riid, void **ppvObj);
  46.   STDMETHOD_(BOOL, FGetParentComponentManager)(IOleComponentManager **ppicm);
  47.   STDMETHOD_(BOOL, FGetActiveComponent)(DWORD dwReserved, IOleComponent **ppic);
  48.   // *** Implementation of FPushMessageLoop from IOleComponentManager
  49.   BOOL PumpMessage(DWORD icomp, ULONG uReason, void *pvLoopData);
  50.   void ProcessMessage(MSG *pmsg);
  51.   void MessageLoop(DWORD icomp, ULONG uReason, void *pvLoopData);
  52.   void DoIdleProcessing(void);
  53.   BOOL DoIdle(void);
  54.   // *** Publicly available state ***
  55.   COMP   m_rgcomp[cCOMP]; // Array of components for our compmgr
  56.   DWORD  m_icompActive;
  57.   BOOL   m_fInState;
  58.   DWORD  m_icompState;
  59.   ULONG  m_uStateID;
  60.   BOOL   m_fScrptReset;
  61.   BOOL   m_fQuitting;
  62.   HWND   m_hwnd;
  63.   HACCEL m_haccel;
  64. private:
  65.   ULONG m_cref;
  66.   ULONG m_cMsgLoop;
  67.   DWORD m_icompMsgLoop;
  68.   // DEBUG info
  69.   #define SIG_MsgLoop 'MsgL'
  70.   DECLARE_SIGNATURE(SIG_MsgLoop);
  71.   };
  72. //--- EOF -------------------------------------------------------------------