1 /* 2 Copyright (c) 2009 NetAllied Systems GmbH 3 4 This file is part of G3DWarehouseBrowser. 5 6 Licensed under the MIT Open Source License, 7 for details please see LICENSE file or the website 8 http://www.opensource.org/licenses/mit-license.php 9 */ 10 11 #ifndef __G3D_DOC_HOST_UI_HANDLER_H__ 12 #define __G3D_DOC_HOST_UI_HANDLER_H__ 13 14 #include "G3DPrerequisites.h" 15 #include <mshtml.h> 16 #include <mshtmhst.h> 17 #include <oaidl.h> 18 #include <string> 19 20 namespace G3D 21 { 22 static const wchar_t* URL_START_STRING = L"skp:getSkp@"; 23 static const wchar_t* URL_START_STRING2 = L"skp:getKmz@"; 24 25 class DocHostUiHandler : public IDocHostUIHandler { 26 27 private: 28 IOleClientSite* mClientSite; 29 HWND mHwndProgress; 30 WideString& mFilePath; 31 32 public: DocHostUiHandler(HWND hwndProgress,WideString & filePath)33 DocHostUiHandler(HWND hwndProgress, WideString& filePath) 34 : mHwndProgress(hwndProgress) 35 , mFilePath(filePath) 36 , mClientSite(0) {}; ~DocHostUiHandler()37 virtual ~DocHostUiHandler() { mClientSite->Release(); } 38 void setClientSite(IOleClientSite*); 39 HRESULT cancelNavigation(OLECHAR __RPC_FAR* __RPC_FAR* ppchURLOut); 40 41 public: // IDocHostUIHandler interface QueryInterface(REFIID riid,LPVOID FAR * ppvObj)42 HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, LPVOID FAR* ppvObj) { 43 if (mClientSite) { 44 return mClientSite->QueryInterface(riid, ppvObj); 45 } 46 return E_NOINTERFACE; 47 } 48 AddRef()49 ULONG STDMETHODCALLTYPE AddRef() { return 1; } 50 Release()51 ULONG STDMETHODCALLTYPE Release() { return 1; } 52 ShowContextMenu(DWORD dwID,POINT __RPC_FAR * ppt,IUnknown __RPC_FAR * pcmdtReserved,IDispatch __RPC_FAR * pdispReserved)53 HRESULT STDMETHODCALLTYPE ShowContextMenu( 54 DWORD dwID, 55 POINT __RPC_FAR *ppt, 56 IUnknown __RPC_FAR *pcmdtReserved, 57 IDispatch __RPC_FAR *pdispReserved){ return S_OK; } 58 ShowUI(DWORD dwID,IOleInPlaceActiveObject __RPC_FAR * pActiveObject,IOleCommandTarget __RPC_FAR * pCommandTarget,IOleInPlaceFrame __RPC_FAR * pFrame,IOleInPlaceUIWindow __RPC_FAR * pDoc)59 HRESULT STDMETHODCALLTYPE ShowUI( 60 DWORD dwID, 61 IOleInPlaceActiveObject __RPC_FAR *pActiveObject, 62 IOleCommandTarget __RPC_FAR *pCommandTarget, 63 IOleInPlaceFrame __RPC_FAR *pFrame, 64 IOleInPlaceUIWindow __RPC_FAR *pDoc) { return S_OK; } 65 66 HRESULT STDMETHODCALLTYPE GetHostInfo(DOCHOSTUIINFO __RPC_FAR *pInfo); 67 HideUI()68 HRESULT STDMETHODCALLTYPE HideUI() { return S_OK; } 69 UpdateUI()70 HRESULT STDMETHODCALLTYPE UpdateUI() { return S_OK; } 71 EnableModeless(BOOL fEnable)72 HRESULT STDMETHODCALLTYPE EnableModeless(BOOL fEnable) { return S_FALSE; } 73 OnDocWindowActivate(BOOL fActivate)74 HRESULT STDMETHODCALLTYPE OnDocWindowActivate(BOOL fActivate) { return S_OK; } 75 OnFrameWindowActivate(BOOL fActivate)76 HRESULT STDMETHODCALLTYPE OnFrameWindowActivate(BOOL fActivate) { return S_OK; } 77 ResizeBorder(LPCRECT prcBorder,IOleInPlaceUIWindow __RPC_FAR * pUIWindow,BOOL fRameWindow)78 HRESULT STDMETHODCALLTYPE ResizeBorder(LPCRECT prcBorder, IOleInPlaceUIWindow __RPC_FAR *pUIWindow, BOOL fRameWindow) { return S_OK; } 79 TranslateAccelerator(LPMSG lpMsg,const GUID __RPC_FAR * pguidCmdGroup,DWORD nCmdID)80 HRESULT STDMETHODCALLTYPE TranslateAccelerator(LPMSG lpMsg, const GUID __RPC_FAR *pguidCmdGroup, DWORD nCmdID) 81 { 82 pguidCmdGroup = 0; 83 return S_FALSE; 84 } 85 GetOptionKeyPath(LPOLESTR __RPC_FAR * pchKey,DWORD dw)86 HRESULT STDMETHODCALLTYPE GetOptionKeyPath(LPOLESTR __RPC_FAR *pchKey, DWORD dw) { return S_FALSE; } 87 GetDropTarget(IDropTarget __RPC_FAR * pDropTarget,IDropTarget __RPC_FAR * __RPC_FAR * ppDropTarget)88 HRESULT STDMETHODCALLTYPE GetDropTarget(IDropTarget __RPC_FAR *pDropTarget, IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget) 89 { return S_FALSE; } 90 GetExternal(IDispatch __RPC_FAR * __RPC_FAR * ppDispatch)91 HRESULT STDMETHODCALLTYPE GetExternal(IDispatch __RPC_FAR *__RPC_FAR *ppDispatch){ 92 *ppDispatch = 0; 93 return S_FALSE; 94 } 95 96 HRESULT STDMETHODCALLTYPE TranslateUrl(DWORD dwTranslate, OLECHAR __RPC_FAR *pchURLIn, OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut); 97 FilterDataObject(IDataObject __RPC_FAR * pDO,IDataObject __RPC_FAR * __RPC_FAR * ppDORet)98 HRESULT STDMETHODCALLTYPE FilterDataObject(IDataObject __RPC_FAR *pDO, IDataObject __RPC_FAR *__RPC_FAR *ppDORet) { 99 100 NOTIMPLEMENTED; 101 //*ppDORet = 0; 102 //return S_FALSE; 103 } 104 }; 105 } 106 #endif // __G3D_DOC_HOST_UI_HANDLER_H__