Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

150 lines
4.8 KiB

/******************************************************************************
Copyright (c) 1999 Microsoft Corporation
Module Name:
HelpViewerWrapper.h
Abstract:
This file contains the declaration of the class used to wrap the HTML Help Viewer.
Revision History:
Davide Massarenti (dmassare) 01/20/2000
created
******************************************************************************/
#if !defined(__INCLUDED___PCH___HELPVIEWERWRAPPER_H___)
#define __INCLUDED___PCH___HELPVIEWERWRAPPER_H___
#include <HelpCenter.h>
#include <htmlhelp.h>
#include <oleacc.h>
#define ID_NOTIFY_FROM_HH (12345)
#define WINDOW_STYLE "HCStyle"
class ATL_NO_VTABLE CPCHHelpViewerWrapper :
public CComObjectRootEx<CComSingleThreadModel>,
public CStockPropImpl <CPCHHelpViewerWrapper, IPCHHelpViewerWrapper, &IID_IPCHHelpViewerWrapper, &LIBID_HelpCenterTypeLib>,
public CComControl <CPCHHelpViewerWrapper>,
public IPersistStreamInitImpl <CPCHHelpViewerWrapper>,
public IOleControlImpl <CPCHHelpViewerWrapper>,
public IOleObjectImpl <CPCHHelpViewerWrapper>,
public IOleInPlaceActiveObjectImpl <CPCHHelpViewerWrapper>,
public IViewObjectExImpl <CPCHHelpViewerWrapper>,
public IOleInPlaceObjectWindowlessImpl<CPCHHelpViewerWrapper>,
public CComCoClass <CPCHHelpViewerWrapper, &CLSID_PCHHelpViewerWrapper>
{
static MPC::CComSafeAutoCriticalSection s_csec;
static bool s_fInitialized;
static DWORD s_dwLastStyle;
static MPC::WStringList s_lstAvailable;
//
// This is the OLEACC stuff used to access the WebBrowser object inside the HTMLHelp viewer.
//
static HINSTANCE s_hInst;
static LPFNOBJECTFROMLRESULT s_pfObjectFromLresult;
////////////////////////////////////////
class ATL_NO_VTABLE ServiceProvider :
public CComObjectRootEx<CComSingleThreadModel>,
public IServiceProvider
{
CPCHHelpCenterExternal* m_parent;
HWND m_hWnd;
public:
BEGIN_COM_MAP(ServiceProvider)
COM_INTERFACE_ENTRY(IServiceProvider)
END_COM_MAP()
ServiceProvider();
virtual ~ServiceProvider();
HRESULT Attach( /*[in]*/ CPCHHelpCenterExternal* parent, /*[in]*/ HWND hWnd );
void Detach( );
//
// IServiceProvider
//
STDMETHOD(QueryService)( REFGUID guidService, REFIID riid, void **ppv );
};
////////////////////////////////////////
CPCHHelpCenterExternal* m_parent;
CPCHHelpViewerWrapper::ServiceProvider* m_ServiceProvider;
bool m_fFirstTime;
MPC::wstring m_szWindowStyle;
HWND m_hwndHH;
CComPtr<IHTMLDocument2> m_spDoc;
CComPtr<IWebBrowser2> m_WB2;
CComBSTR m_bstrPendingNavigation;
////////////////////////////////////////
void AcquireWindowStyle();
void ReleaseWindowStyle();
void ExtractWebBrowser();
void InternalDisplayTopic( /*[in]*/ LPCWSTR szURL );
public:
DECLARE_NO_REGISTRY()
DECLARE_NOT_AGGREGATABLE(CPCHHelpViewerWrapper)
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CPCHHelpViewerWrapper)
COM_INTERFACE_ENTRY(IPCHHelpViewerWrapper)
COM_INTERFACE_ENTRY2(IDispatch, IPCHHelpViewerWrapper)
COM_INTERFACE_ENTRY(IViewObjectEx)
COM_INTERFACE_ENTRY(IViewObject2)
COM_INTERFACE_ENTRY(IViewObject)
COM_INTERFACE_ENTRY(IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IOleInPlaceObject)
COM_INTERFACE_ENTRY2(IOleWindow, IOleInPlaceObjectWindowless)
COM_INTERFACE_ENTRY(IOleInPlaceActiveObject)
COM_INTERFACE_ENTRY(IOleControl)
COM_INTERFACE_ENTRY(IOleObject)
COM_INTERFACE_ENTRY(IPersistStreamInit)
COM_INTERFACE_ENTRY2(IPersist, IPersistStreamInit)
END_COM_MAP()
BEGIN_PROP_MAP(CPCHHelpViewerWrapper)
END_PROP_MAP()
CPCHHelpViewerWrapper();
virtual ~CPCHHelpViewerWrapper();
BOOL ProcessWindowMessage( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT& lResult, DWORD dwMsgMapID = 0 );
BOOL PreTranslateAccelerator( LPMSG pMsg, HRESULT& hRet );
// IViewObjectEx
DECLARE_VIEW_STATUS(0)
// IOleObject
STDMETHOD(SetClientSite)(IOleClientSite *pClientSite);
// IPCHHelpViewerWrapper
public:
STDMETHOD(get_WebBrowser)( /*[out,retval]*/ IUnknown* *pVal );
STDMETHOD(Navigate)( /*[in]*/ BSTR bstrURL );
STDMETHOD(Print )( );
};
/////////////////////////////////////////////////////////////////////////////
#endif // !defined(__INCLUDED___PCH___HELPVIEWERWRAPPER_H___)