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

Windows编程

开发平台:

Visual C++

  1. // Random.h : Declaration of the CRandom
  2. #include "connres.h"       // main symbols
  3. /////////////////////////////////////////////////////////////////////////////
  4. // CRandom
  5. const int nMaxSessions = 10;
  6. class CRandom : 
  7.     public CComDualImpl<IRandom, &IID_IRandom, &LIBID_CONNECTLib>, 
  8.     public IConnectionPointContainerImpl<CRandom>,
  9.     public IConnectionPointImpl<CRandom, &IID_IRandomEvent, CComDynamicUnkArray>,
  10.     public ISupportErrorInfo,
  11.     public CComObjectRoot,
  12.     public CComCoClass<CRandom,&CLSID_CoRandom>
  13. {
  14. public:
  15.     CRandom() 
  16.     {
  17.         memset(m_rsArray, 0, nMaxSessions*sizeof(RandomSessionData));
  18.     }
  19.     ~CRandom();
  20. BEGIN_COM_MAP(CRandom)
  21.     COM_INTERFACE_ENTRY2(IDispatch, IRandom)
  22.     COM_INTERFACE_ENTRY(IRandom)
  23.     COM_INTERFACE_ENTRY(ISupportErrorInfo)
  24.     COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
  25. END_COM_MAP()
  26. //  DECLARE_NOT_AGGREGATABLE(CRandom) 
  27. // Remove the comment from the line above if you don't want your object to 
  28. // support aggregation.  The default is to support it
  29.     DECLARE_REGISTRY_RESOURCEID(IDR_Random)
  30. // Connection Point
  31.     BEGIN_CONNECTION_POINT_MAP(CRandom)
  32.         CONNECTION_POINT_ENTRY(IID_IRandomEvent)
  33.     END_CONNECTION_POINT_MAP()
  34.     
  35. // ISupportsErrorInfo
  36.     STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
  37. // IRandom
  38.     STDMETHOD(get_Start)(long* pnID);
  39.     STDMETHOD(put_Stop)(long nID);
  40.     STDMETHOD(StopAll)();
  41.     // method to broadcast a call on the current connections
  42.     HRESULT Fire(long  nID);
  43.     // info associated to each session
  44.     struct RandomSessionData
  45.     {
  46.         CRandom* pRandom;
  47.         HANDLE m_hEvent;
  48.         HANDLE m_hThread;
  49.         int m_nID;
  50.     };
  51. protected:
  52.     RandomSessionData m_rsArray[nMaxSessions];
  53.     void CreateRandomSession(RandomSessionData& rs);
  54.     _ThreadModel::AutoCriticalSection m_cs;
  55. };