html.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 7k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef _HTML_H
  2. #define _HTML_H
  3. interface IHTMLDocument2;
  4. //
  5. // a class host for trident so that we can control what it downloads 
  6. // and what it doesn't...
  7. //
  8. class CTridentHost : public IOleClientSite,
  9.                      public IDispatch,
  10.                      public IDocHostUIHandler
  11. {
  12.     public:
  13.         CTridentHost();
  14.         ~CTridentHost();
  15.         HRESULT SetTrident( IOleObject * pTrident );
  16.         // IUnknown
  17.         STDMETHOD ( QueryInterface )( REFIID riid, LPVOID * ppvObj );
  18.         STDMETHOD_( ULONG, AddRef ) ( void );
  19.         STDMETHOD_( ULONG, Release ) ( void );
  20.         
  21.         // IDispatch (ambient properties)
  22.         STDMETHOD( GetTypeInfoCount ) (UINT *pctinfo);
  23.         STDMETHOD( GetTypeInfo )(UINT itinfo, LCID lcid, ITypeInfo **pptinfo);
  24.         STDMETHOD( GetIDsOfNames )(REFIID riid, OLECHAR **rgszNames, UINT cNames,
  25.                                    LCID lcid, DISPID *rgdispid);
  26.         STDMETHOD( Invoke )(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags,
  27.                             DISPPARAMS *pdispparams, VARIANT *pvarResult,
  28.                             EXCEPINFO *pexcepinfo, UINT *puArgErr);
  29.         // IOleClientSite
  30.         STDMETHOD( SaveObject )(void);
  31.         STDMETHOD( GetMoniker )(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk);
  32.         STDMETHOD( GetContainer )(IOleContainer **ppContainer);
  33.         STDMETHOD( ShowObject )(void);
  34.         STDMETHOD( OnShowWindow )(BOOL fShow);
  35.         STDMETHOD( RequestNewObjectLayout )(void);
  36.         // IDocHostUIHandler
  37.         STDMETHOD( ShowContextMenu )( DWORD dwID, POINT *ppt, IUnknown *pcmdtReserved, IDispatch *pdispReserved);
  38.         STDMETHOD( GetHostInfo )( DOCHOSTUIINFO *pInfo);
  39.         STDMETHOD( ShowUI )( DWORD dwID, IOleInPlaceActiveObject *pActiveObject,IOleCommandTarget *pCommandTarget,
  40.             IOleInPlaceFrame *pFrame, IOleInPlaceUIWindow *pDoc);
  41.         STDMETHOD( HideUI )( void);
  42.         STDMETHOD( UpdateUI )( void);
  43.         STDMETHOD( EnableModeless )( BOOL fEnable);
  44.         STDMETHOD( OnDocWindowActivate )( BOOL fActivate);
  45.         STDMETHOD( OnFrameWindowActivate )( BOOL fActivate);
  46.         STDMETHOD( ResizeBorder )( LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fRameWindow);
  47.         STDMETHOD( TranslateAccelerator )( LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID);
  48.         STDMETHOD( GetOptionKeyPath )( LPOLESTR *pchKey, DWORD dw);
  49.         STDMETHOD( GetDropTarget )( IDropTarget *pDropTarget, IDropTarget **ppDropTarget);
  50.         STDMETHOD( GetExternal )( IDispatch **ppDispatch);
  51.         STDMETHOD( TranslateUrl )( DWORD dwTranslate, OLECHAR *pchURLIn, OLECHAR **ppchURLOut);
  52.         STDMETHOD( FilterDataObject )( IDataObject *pDO, IDataObject **ppDORet);
  53.     public:
  54.         BITBOOL m_fOffline : 1;
  55.         
  56.    protected:
  57.         long m_cRef;
  58. };
  59. class CHtmlThumb : public IExtractImage,
  60.                    public IRunnableTask,
  61.                    public IPropertyNotifySink,
  62.                    public IPersistFile,
  63.                    public IPersistMoniker,
  64.                    public CComObjectRoot,
  65.                    public CComCoClass< CHtmlThumb,&CLSID_HtmlThumbnailExtractor >
  66. {
  67.     public:
  68.         CHtmlThumb();
  69.         ~CHtmlThumb();
  70.         BEGIN_COM_MAP( CHtmlThumb )
  71.             COM_INTERFACE_ENTRY( IExtractImage)
  72.             COM_INTERFACE_ENTRY( IRunnableTask )
  73.             COM_INTERFACE_ENTRY( IPropertyNotifySink )
  74.             COM_INTERFACE_ENTRY( IPersistFile )
  75.             COM_INTERFACE_ENTRY( IPersistMoniker )
  76.         END_COM_MAP( )
  77.         DECLARE_REGISTRY( CHtmlThumb,
  78.                           _T("Shell.ThumbnailExtract.HTML.1"),
  79.                           _T("Shell.ThumbnailExtract.HTML.1"),
  80.                           IDS_HTMLTHUMBEXTRACT_DESC,
  81.                           THREADFLAGS_APARTMENT);
  82.         DECLARE_NOT_AGGREGATABLE( CHtmlThumb );
  83.         // IExtractImage
  84.         STDMETHOD (GetLocation) ( LPWSTR pszPathBuffer,
  85.                                   DWORD cch,
  86.                                   DWORD * pdwPriority,
  87.                                   const SIZE * prgSize,
  88.                                   DWORD dwRecClrDepth,
  89.                                   DWORD *pdwFlags );
  90.      
  91.         STDMETHOD (Extract)( HBITMAP * phBmpThumbnail );
  92.         // IRunnableTask 
  93.         STDMETHOD (Run)( void ) ;
  94.         STDMETHOD (Kill)( BOOL fWait );
  95.         STDMETHOD (Suspend)( );
  96.         STDMETHOD (Resume)( );
  97.         STDMETHOD_( ULONG, IsRunning )( void );
  98.         // IPropertyNotifySink
  99.         STDMETHOD (OnChanged)( DISPID dispID);
  100.         STDMETHOD (OnRequestEdit) ( DISPID dispID);
  101.         // IPersistFile
  102.         STDMETHOD (GetClassID )(CLSID *pClassID);
  103.         STDMETHOD (IsDirty )();
  104.         STDMETHOD (Load )( LPCOLESTR pszFileName, DWORD dwMode);
  105.         STDMETHOD (Save )( LPCOLESTR pszFileName, BOOL fRemember);
  106.         STDMETHOD (SaveCompleted )( LPCOLESTR pszFileName);
  107.         STDMETHOD (GetCurFile )( LPOLESTR *ppszFileName);
  108.         // IPersistMoniker
  109.         STDMETHOD( Load )( BOOL fFullyAvailable, IMoniker *pimkName, LPBC pibc, DWORD grfMode);
  110.         STDMETHOD( Save )( IMoniker *pimkName, LPBC pbc, BOOL fRemember);
  111.         STDMETHOD( SaveCompleted )( IMoniker *pimkName, LPBC pibc);
  112.         STDMETHOD( GetCurMoniker )( IMoniker **ppimkName);
  113.     protected:
  114.         HRESULT InternalResume( void );
  115.         HRESULT Create_URL_Moniker( LPMONIKER * ppMoniker );
  116.         HRESULT WaitForRender( void );
  117.         HRESULT Finish( HBITMAP * pBmp, const SIZE * prgSize, DWORD dwClrDepth );
  118.         HRESULT CheckReadyState( );
  119.         void ReportError( LPVOID * pMsgArgs );
  120.         
  121.         LONG m_lState;
  122.         BITBOOL m_fAsync : 1;
  123.         BITBOOL m_fAspect : 1;
  124.         HANDLE m_hDone;
  125.         CTridentHost m_Host;
  126.         IHTMLDocument2 * m_pHTML;
  127.         IOleObject * m_pOleObject;
  128.         IConnectionPoint * m_pConPt;
  129.         IViewObject * m_pViewObject;
  130.         DWORD m_dwTimeout;
  131.         DWORD m_dwCurrentTick;
  132.         DWORD m_dwPropNotifyCookie;
  133.         WCHAR m_szPath[MAX_PATH];
  134.         SIZE m_rgSize;
  135.         HBITMAP * m_phBmp;
  136.         DWORD m_dwClrDepth;
  137.         UINT m_idErrorIcon;
  138.         UINT m_idError;
  139.         DECLAREWAITCURSOR;
  140.         DWORD m_dwXRenderSize;
  141.         DWORD m_dwYRenderSize;
  142.         IMoniker * m_pMoniker;
  143. };
  144. // time we wait before asking the internet explorer if it is done yet ...
  145. #define TIME_PAUSE 200
  146. // default timeout (seconds)
  147. #define TIME_DEFAULT 90
  148. HRESULT RegisterHTMLExtractor( void );
  149. HRESULT UnregisterHTMLExtractor( void );
  150. UINT FormatMessageBox( HWND hwnd, UINT idMsg, UINT idTitle, 
  151.                        LPVOID * pArgsMsg, LPVOID * pArgsTitle,
  152.                        UINT idIconResource, UINT uFlags );
  153. #endif