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.
156 lines
5.5 KiB
156 lines
5.5 KiB
/*
|
|
* d o c h o s t . h
|
|
*
|
|
* Purpose:
|
|
* basic implementation of a docobject host. Used by the body class to
|
|
* host Trident and/or MSHTML
|
|
*
|
|
* History
|
|
* August '96: brettm - created
|
|
*
|
|
* Copyright (C) Microsoft Corp. 1995, 1996.
|
|
*/
|
|
|
|
#ifndef _DOCHOST_H
|
|
#define _DOCHOST_H
|
|
|
|
#include <docobj.h>
|
|
|
|
// DocHost border sytles
|
|
enum
|
|
{
|
|
dhbNone =0x0, // no border
|
|
dhbHost =0x01, // dochost paints border
|
|
dhbObject =0x02 // docobj paints border
|
|
};
|
|
|
|
class CDocHost:
|
|
public IOleInPlaceUIWindow,
|
|
public IOleInPlaceSite,
|
|
public IOleClientSite,
|
|
public IOleControlSite,
|
|
public IAdviseSink,
|
|
public IOleDocumentSite,
|
|
public IOleCommandTarget,
|
|
public IServiceProvider
|
|
{
|
|
public:
|
|
// *** IUnknown methods ***
|
|
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID, LPVOID FAR *);
|
|
virtual ULONG STDMETHODCALLTYPE AddRef();
|
|
virtual ULONG STDMETHODCALLTYPE Release();
|
|
|
|
// *** IOleWindow methods ***
|
|
virtual HRESULT STDMETHODCALLTYPE GetWindow(HWND *);
|
|
virtual HRESULT STDMETHODCALLTYPE ContextSensitiveHelp(BOOL);
|
|
|
|
// *** IOleInPlaceUIWindow methods ***
|
|
virtual HRESULT STDMETHODCALLTYPE GetBorder(LPRECT);
|
|
virtual HRESULT STDMETHODCALLTYPE RequestBorderSpace(LPCBORDERWIDTHS);
|
|
virtual HRESULT STDMETHODCALLTYPE SetBorderSpace(LPCBORDERWIDTHS);
|
|
virtual HRESULT STDMETHODCALLTYPE SetActiveObject(IOleInPlaceActiveObject *, LPCOLESTR);
|
|
|
|
// IOleInPlaceSite methods.
|
|
virtual HRESULT STDMETHODCALLTYPE CanInPlaceActivate();
|
|
virtual HRESULT STDMETHODCALLTYPE OnInPlaceActivate();
|
|
virtual HRESULT STDMETHODCALLTYPE OnUIActivate();
|
|
virtual HRESULT STDMETHODCALLTYPE GetWindowContext(LPOLEINPLACEFRAME *, LPOLEINPLACEUIWINDOW *, LPRECT, LPRECT, LPOLEINPLACEFRAMEINFO);
|
|
virtual HRESULT STDMETHODCALLTYPE Scroll(SIZE);
|
|
virtual HRESULT STDMETHODCALLTYPE OnUIDeactivate(BOOL);
|
|
virtual HRESULT STDMETHODCALLTYPE OnInPlaceDeactivate();
|
|
virtual HRESULT STDMETHODCALLTYPE DiscardUndoState();
|
|
virtual HRESULT STDMETHODCALLTYPE DeactivateAndUndo();
|
|
virtual HRESULT STDMETHODCALLTYPE OnPosRectChange(LPCRECT);
|
|
|
|
// IOleClientSite methods.
|
|
virtual HRESULT STDMETHODCALLTYPE SaveObject();
|
|
virtual HRESULT STDMETHODCALLTYPE GetMoniker(DWORD, DWORD, LPMONIKER *);
|
|
virtual HRESULT STDMETHODCALLTYPE GetContainer(LPOLECONTAINER *);
|
|
virtual HRESULT STDMETHODCALLTYPE ShowObject();
|
|
virtual HRESULT STDMETHODCALLTYPE OnShowWindow(BOOL);
|
|
virtual HRESULT STDMETHODCALLTYPE RequestNewObjectLayout();
|
|
|
|
// IOleControlSite
|
|
virtual HRESULT STDMETHODCALLTYPE OnControlInfoChanged();
|
|
virtual HRESULT STDMETHODCALLTYPE LockInPlaceActive(BOOL fLock);
|
|
virtual HRESULT STDMETHODCALLTYPE GetExtendedControl(LPDISPATCH *ppDisp);
|
|
virtual HRESULT STDMETHODCALLTYPE TransformCoords(POINTL *pPtlHimetric, POINTF *pPtfContainer,DWORD dwFlags);
|
|
virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(MSG *lpMsg,DWORD grfModifiers);
|
|
virtual HRESULT STDMETHODCALLTYPE OnFocus(BOOL fGotFocus);
|
|
virtual HRESULT STDMETHODCALLTYPE ShowPropertyFrame(void);
|
|
|
|
// IAdviseSink methods
|
|
virtual void STDMETHODCALLTYPE OnDataChange(FORMATETC *, STGMEDIUM *);
|
|
virtual void STDMETHODCALLTYPE OnViewChange(DWORD, LONG);
|
|
virtual void STDMETHODCALLTYPE OnRename(LPMONIKER);
|
|
virtual void STDMETHODCALLTYPE OnSave();
|
|
virtual void STDMETHODCALLTYPE OnClose();
|
|
|
|
// IOleDocumentSite
|
|
virtual HRESULT STDMETHODCALLTYPE ActivateMe(LPOLEDOCUMENTVIEW);
|
|
|
|
// IOleCommandTarget
|
|
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *, ULONG, OLECMD [], OLECMDTEXT *);
|
|
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *, DWORD, DWORD, VARIANTARG *, VARIANTARG *);
|
|
|
|
// IServiceProvider
|
|
virtual HRESULT STDMETHODCALLTYPE QueryService(REFGUID guidService, REFIID riid, LPVOID *ppvObject);
|
|
|
|
|
|
CDocHost();
|
|
virtual ~CDocHost();
|
|
|
|
// statics
|
|
static LRESULT CALLBACK ExtWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
// overridble virtuals
|
|
virtual LRESULT WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
|
|
|
|
// derrived class notifications
|
|
virtual HRESULT HrSubWMCreate();
|
|
virtual void OnWMSize(LPRECT prc){};
|
|
virtual void OnUpdateCommands(){};
|
|
virtual HRESULT HrGetDocObjSize(LPRECT prc)
|
|
{return E_NOTIMPL;};
|
|
|
|
HRESULT HrCreateDocObj(LPCLSID pCLSID);
|
|
HRESULT HrCloseDocObj();
|
|
|
|
HRESULT HrInit(HWND hwndParent, int idDlgItem, DWORD dhbBorder);
|
|
|
|
protected:
|
|
HWND m_hwnd,
|
|
m_hwndDocObj;
|
|
LPOLEOBJECT m_lpOleObj;
|
|
LPOLEDOCUMENTVIEW m_pDocView;
|
|
LPOLECOMMANDTARGET m_pCmdTarget;
|
|
BOOL m_fDownloading,
|
|
m_fFocus,
|
|
m_fUIActive,
|
|
m_fCycleFocus;
|
|
LPOLEINPLACEACTIVEOBJECT m_pInPlaceActiveObj;
|
|
LPOLEINPLACEFRAME m_pInPlaceFrame;
|
|
|
|
void WMSize(int x, int y);
|
|
HRESULT HrShow();
|
|
|
|
private:
|
|
ULONG m_cRef,
|
|
m_ulAdviseConnection;
|
|
DWORD m_dwFrameWidth,
|
|
m_dwFrameHeight,
|
|
m_dhbBorder;
|
|
|
|
|
|
|
|
HRESULT HrCreateDocView();
|
|
|
|
BOOL WMCreate(HWND hwnd);
|
|
void WMNCDestroy();
|
|
|
|
};
|
|
|
|
typedef CDocHost DOCHOST;
|
|
typedef DOCHOST *LPDOCHOST;
|
|
|
|
#endif //_DOCHOST_H
|