resprot.hxx
Upload User: caisha3
Upload Date: 2013-09-21
Package Size: 208739k
Code Size: 4k
Category:

Windows Develop

Development Platform:

Visual C++

  1. //+------------------------------------------------------------------------
  2. //
  3. //  Microsoft Forms
  4. //  Copyright (C) Microsoft Corporation, 1996
  5. //
  6. //  File:       resprot.hxx
  7. //
  8. //  Contents:   The res: protocol
  9. //
  10. //  History:    02-12-97   AnandRa (Anand Ramakrishna)    Created
  11. //
  12. //----------------------------------------------------------------------------
  13. #ifndef I_RESPROT_HXX_
  14. #define I_RESPROT_HXX_
  15. #pragma INCMSG("--- Beg 'resprot.hxx'")
  16. #ifndef X_BASEPROT_HXX_
  17. #define X_BASEPROT_HXX_
  18. #include "baseprot.hxx"
  19. #endif
  20. #ifndef X_DOWNLOAD_HXX_
  21. #define X_DOWNLOAD_HXX_
  22. #include "download.hxx"
  23. #endif
  24. MtExtern(CResProtocol)
  25. MtExtern(CViewSourceProtocol)
  26. class CResProtocolCF : public CBaseProtocolCF
  27. {
  28. typedef CBaseProtocolCF super;
  29. public:
  30.     // constructor
  31.     CResProtocolCF(FNCREATE *pfnCreate) : super(pfnCreate) {}
  32.     // IOInetProtocolInfo overrides
  33.     STDMETHODIMP ParseUrl(LPCWSTR     pwzUrl,
  34.                           PARSEACTION ParseAction,
  35.                           DWORD       dwFlags,
  36.                           LPWSTR      pwzResult,
  37.                           DWORD       cchResult,
  38.                           DWORD *     pcchResult,
  39.                           DWORD       dwReserved);
  40.     STDMETHODIMP QueryInfo(LPCWSTR         pwzUrl,
  41.                            QUERYOPTION     QueryOption,
  42.                            DWORD           dwQueryFlags,
  43.                            LPVOID          pBuffer,
  44.                            DWORD           cbBuffer,
  45.                            DWORD *         pcbBuf,
  46.                            DWORD           dwReserved);
  47. };
  48. class CResProtocol : public CBaseProtocol
  49. {
  50. typedef CBaseProtocol super;
  51. public:
  52.     DECLARE_MEMCLEAR_NEW_DELETE(Mt(CResProtocol))
  53.     // ctor/dtor
  54.     CResProtocol(IUnknown *pUnkOuter);
  55.     ~CResProtocol();
  56.     
  57.     virtual const CBase::CLASSDESC *GetClassDesc() const
  58.         { return &s_classdesc;}
  59.     // Internet Helpers
  60.     virtual HRESULT ParseAndBind();
  61.     virtual void _ReportData(ULONG cb);
  62.     static  HRESULT DoParseAndBind(
  63.         TCHAR *pchUrl, 
  64.         CStr &cstrResName,
  65.         CStr &cstrResType,
  66.         CStr &cstrRID,
  67.         IStream **ppStm, 
  68.         CResProtocol *pProt);
  69.     
  70.     // IInternetProtocol overrides
  71.     STDMETHOD(Start)(
  72.             LPCWSTR szUrl,
  73.             IInternetProtocolSink *pProtSink,
  74.             IInternetBindInfo *pOIBindInfo,
  75.             DWORD grfSTI,
  76.             HANDLE_PTR dwReserved);
  77.     // Data members
  78.     CStr                _cstrResName;   // Resource dll name
  79.     CStr                _cstrResType;   // Resource type (empty if default type)
  80.     CStr                _cstrRID;       // String resource id to use
  81.     // static members
  82.     static const CLASSDESC    s_classdesc;        // The class descriptor
  83. };
  84. class CViewSourceProtocolCF : public CBaseProtocolCF
  85. {
  86. typedef CBaseProtocolCF super;
  87. public:
  88.     // constructor
  89.     CViewSourceProtocolCF(FNCREATE *pfnCreate) : super(pfnCreate) {}
  90.     // IOInetProtocolInfo overrides
  91.     STDMETHODIMP QueryInfo(LPCWSTR         pwzUrl,
  92.                            QUERYOPTION     QueryOption,
  93.                            DWORD           dwQueryFlags,
  94.                            LPVOID          pBuffer,
  95.                            DWORD           cbBuffer,
  96.                            DWORD *         pcbBuf,
  97.                            DWORD           dwReserved);
  98. };
  99. class CViewSourceProtocol : public CBaseProtocol
  100. {
  101. typedef CBaseProtocol super;
  102. public:
  103.     DECLARE_MEMCLEAR_NEW_DELETE(Mt(CViewSourceProtocol))
  104.     // ctor/dtor
  105.     CViewSourceProtocol(IUnknown *pUnkOuter) : super(pUnkOuter) { _pBitsCtx = NULL; }
  106.     ~CViewSourceProtocol() {}
  107.     
  108.     virtual void Passivate();
  109.     virtual const CBase::CLASSDESC *GetClassDesc() const
  110.         { return &s_classdesc;}
  111.     // IInternetProtocol methods
  112.     STDMETHOD(Abort)(HRESULT hrReason,DWORD dwOptions);
  113.     // Internet Helpers
  114.     virtual HRESULT ParseAndBind();
  115.     void OnDwnChan();
  116.     static void CALLBACK OnDwnChanCallback(void * pvObj, void * pvArg)
  117.         { ((CViewSourceProtocol *)pvArg)->OnDwnChan(); }
  118.     // Data members
  119.     CBitsCtx *                _pBitsCtx;
  120.     // static members
  121.     static const CLASSDESC    s_classdesc;        // The class descriptor
  122. };
  123. #pragma INCMSG("--- End 'resprot.hxx'")
  124. #else
  125. #pragma INCMSG("*** Dup 'resprot.hxx'")
  126. #endif