mirror of https://github.com/tongzx/nt5src
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.
107 lines
5.0 KiB
107 lines
5.0 KiB
#ifndef _DHUIHAND_H
|
|
#define _DHUIHAND_H
|
|
|
|
class CDocHostUIHandler :
|
|
public IDocHostUIHandler2
|
|
, public IObjectWithSite
|
|
, public IOleCommandTarget
|
|
, public IDispatch
|
|
{
|
|
public:
|
|
|
|
// *** IUnknown methods ***
|
|
STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID *ppv);
|
|
STDMETHOD_(ULONG,AddRef)(THIS);
|
|
STDMETHOD_(ULONG,Release)(THIS);
|
|
|
|
// IDocHostUIHandler
|
|
virtual HRESULT STDMETHODCALLTYPE ShowContextMenu(
|
|
DWORD dwID, POINT *ppt, IUnknown *pcmdtReserved, IDispatch *pdispReserved);
|
|
virtual HRESULT STDMETHODCALLTYPE GetHostInfo(DOCHOSTUIINFO *pInfo);
|
|
virtual HRESULT STDMETHODCALLTYPE ShowUI(
|
|
DWORD dwID, IOleInPlaceActiveObject *pActiveObject,
|
|
IOleCommandTarget *pCommandTarget, IOleInPlaceFrame *pFrame,
|
|
IOleInPlaceUIWindow *pDoc);
|
|
virtual HRESULT STDMETHODCALLTYPE HideUI(void);
|
|
virtual HRESULT STDMETHODCALLTYPE UpdateUI(void);
|
|
virtual HRESULT STDMETHODCALLTYPE EnableModeless(BOOL fEnable);
|
|
virtual HRESULT STDMETHODCALLTYPE OnDocWindowActivate(BOOL fActivate);
|
|
virtual HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(BOOL fActivate);
|
|
virtual HRESULT STDMETHODCALLTYPE ResizeBorder(
|
|
LPCRECT prcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fRameWindow);
|
|
virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
|
|
LPMSG lpMsg, const GUID *pguidCmdGroup, DWORD nCmdID);
|
|
virtual HRESULT STDMETHODCALLTYPE GetOptionKeyPath(BSTR *pbstrKey, DWORD dw);
|
|
virtual HRESULT STDMETHODCALLTYPE GetDropTarget(
|
|
IDropTarget *pDropTarget, IDropTarget **ppDropTarget);
|
|
virtual HRESULT STDMETHODCALLTYPE GetExternal(IDispatch **ppDisp);
|
|
virtual HRESULT STDMETHODCALLTYPE TranslateUrl(DWORD dwTranslate, OLECHAR *pchURLIn, OLECHAR **ppchURLOut);
|
|
virtual HRESULT STDMETHODCALLTYPE FilterDataObject(IDataObject *pDO, IDataObject **ppDORet);
|
|
|
|
// IDocHostUIHandler2
|
|
virtual HRESULT STDMETHODCALLTYPE GetOverrideKeyPath(LPOLESTR *pchKey, DWORD dw);
|
|
|
|
// IObjectWithSite
|
|
virtual HRESULT STDMETHODCALLTYPE SetSite(IUnknown *punkSite);
|
|
virtual HRESULT STDMETHODCALLTYPE GetSite(REFIID riid, void **ppvSite);
|
|
|
|
// IOleCommandTarget
|
|
virtual HRESULT STDMETHODCALLTYPE QueryStatus(const GUID *pguidCmdGroup,
|
|
ULONG cCmds, OLECMD rgCmds[], OLECMDTEXT *pcmdtext);
|
|
virtual HRESULT STDMETHODCALLTYPE Exec(const GUID *pguidCmdGroup,
|
|
DWORD nCmdID, DWORD nCmdexecopt, VARIANTARG *pvarargIn, VARIANTARG *pvarargOut);
|
|
|
|
//IDispatch
|
|
virtual STDMETHODIMP GetTypeInfoCount(UINT* pctinfo) { return E_NOTIMPL; };
|
|
virtual STDMETHODIMP GetTypeInfo(UINT iTInfo, LCID lcid, ITypeInfo** ppTInfo) { return E_NOTIMPL; };
|
|
virtual STDMETHODIMP GetIDsOfNames(REFIID riid, LPOLESTR *rgszNames, UINT cNames,
|
|
LCID lcid, DISPID *rgDispId) { return E_NOTIMPL; };
|
|
virtual STDMETHODIMP Invoke(DISPID dispIdMember, REFIID riid,
|
|
LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult,
|
|
EXCEPINFO *pExcepInfo, UINT *puArgErr);
|
|
|
|
CDocHostUIHandler::CDocHostUIHandler(void);
|
|
CDocHostUIHandler::~CDocHostUIHandler(void);
|
|
|
|
protected:
|
|
HRESULT GetAltExternal(IDispatch **ppDisp);
|
|
void ShowErrorDialog(VARIANTARG *pvarargIn, VARIANTARG *pvarargOut, DWORD dwflags);
|
|
HRESULT ShowMessage(VARIANTARG *pvarargIn, VARIANTARG *pvarargOut, DWORD dwflags);
|
|
void ShowFindDialog(VARIANTARG *pvarargIn, VARIANTARG *pvarargOut, DWORD dwflags);
|
|
HRESULT ShowPageSetupDialog(VARIANTARG *pvarargIn, VARIANTARG *pvarargOut, DWORD dwflags);
|
|
HRESULT ShowPrintDialog(VARIANTARG *pvarargIn, VARIANTARG *pvarargOut, DWORD dwflags);
|
|
HRESULT DoTemplatePrinting(VARIANTARG *pvarargIn, VARIANTARG *pvarargOut, BOOL fPREVIEW);
|
|
HRESULT DoTemplatePageSetup(VARIANTARG *pvarargIn);
|
|
HRESULT ShowPropertysheetDialog(VARIANTARG *pvarargIn, VARIANTARG *pvarargOut, DWORD dwflags);
|
|
HRESULT ShowPropertysheetDialogHelper(int cUnk, IUnknown ** apUnk, HWND hwndOwner,
|
|
IServiceProvider * pServiceProvider, IUnknown * punkBrowseDefault);
|
|
HRESULT GetCommonPages(int cUnk, IUnknown **apUnk, CAUUID *pca);
|
|
HRESULT ClsidToMoniker(VARIANTARG *pvarargIn, VARIANTARG *pvarargOut);
|
|
IUnknown * _punkSite;
|
|
IOleInPlaceFrame * _pOleInPlaceFrame;
|
|
HMENU _hBrowseMenu;
|
|
HMENU _hEditMenu;
|
|
IDispatch * _pExternal;
|
|
|
|
IHTMLOptionsHolder * _pOptionsHolder;
|
|
|
|
BOOL IsFindDialogUp(IWebBrowser2* pwb, IHTMLWindow2** ppWindow);
|
|
|
|
public:
|
|
//to block more then one preview
|
|
LONG IncrementPreviewCnt() { return InterlockedIncrement(&m_cPreviewIsUp); };
|
|
LONG DecrementPreviewCnt() { return InterlockedDecrement(&m_cPreviewIsUp); };
|
|
|
|
private:
|
|
LONG m_cRef;
|
|
LONG m_cPreviewIsUp;
|
|
};
|
|
|
|
BSTR GetFindText(IWebBrowser2* pwb);
|
|
void PutFindText(IWebBrowser2* pwb, LPCWSTR pwszFindText);
|
|
|
|
#define STR_FIND_DIALOG_NAME TEXT("__IE_FindDialog")
|
|
#define STR_FIND_DIALOG_TEXT TEXT("__IE_FindDialogText")
|
|
#define STR_PRINT_PREVIEW_NAME TEXT("__IE_PRINTPREVIEW_TEMPLATE")
|
|
|
|
#endif //_DHUIHAND_H
|