6 #ifndef _INC_cOleClientSite_H
7 #define _INC_cOleClientSite_H
14 #if defined(_WIN32) && defined(_MSC_VER)
21 ,
public IOleClientSite
22 ,
public IOleInPlaceSite
23 ,
public IDocHostUIHandler
24 ,
public IOleInPlaceFrame
31 cOleControl* m_pOleControl;
33 BORDERWIDTHS m_BorderWidths;
36 cOleClientSite(cOleControl* pOleControl)
37 : m_pOleControl(pOleControl)
40 cMem::Zero(&m_BorderWidths,
sizeof(m_BorderWidths));
43 virtual ~cOleClientSite()
52 m_pOleControl =
nullptr;
64 if (m_pOleControl ==
nullptr)
66 return m_pOleControl->ReturnError(E_NOTIMPL);
69 STDMETHOD(QueryInterface)(REFIID riid,
void** ppvObject)
override
88 cOleClientSite* pThis =
this;
91 || riid == __uuidof(IOleClientSite))
93 *ppvObject =
static_cast<IOleClientSite*
>(pThis);
96 else if (riid == __uuidof(IOleInPlaceSite))
98 *ppvObject =
static_cast<IOleInPlaceSite*
>(pThis);
101 else if (riid == __uuidof(IDocHostUIHandler))
103 *ppvObject =
static_cast<IDocHostUIHandler*
>(pThis);
106 else if (riid == __uuidof(IOleInPlaceFrame))
108 *ppvObject =
static_cast<IOleInPlaceFrame*
>(pThis);
122 STDMETHOD(SaveObject)()
override
127 STDMETHOD(GetMoniker)(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker ** ppmk)
override
135 STDMETHOD(GetContainer)(LPOLECONTAINER FAR* ppContainer)
override
139 *ppContainer =
nullptr;
140 return E_NOINTERFACE;
142 STDMETHOD(ShowObject)()
override
147 STDMETHOD(OnShowWindow)(BOOL fShow)
override
151 m_bShowWindow = fShow;
154 STDMETHOD(RequestNewObjectLayout)()
override
161 STDMETHOD(GetWindow)(HWND FAR* lphwnd)
override
170 if (m_pOleControl ==
nullptr)
173 *lphwnd = m_pOleControl->get_WndFrame();
177 STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode)
override
183 STDMETHOD(CanInPlaceActivate)()
override
189 STDMETHOD(OnInPlaceActivate)()
override
195 STDMETHOD(OnUIActivate)()
override
200 STDMETHOD(GetWindowContext)(LPOLEINPLACEFRAME FAR* lplpFrame, LPOLEINPLACEUIWINDOW FAR* lplpDoc, LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo)
override
207 if (this->m_pOleControl ==
nullptr)
209 *lplpFrame =
static_cast<IOleInPlaceFrame*
>(
this);
215 lpFrameInfo->fMDIApp =
false;
216 lpFrameInfo->hwndFrame = m_pOleControl->get_WndFrame();
217 lpFrameInfo->haccel = 0;
218 lpFrameInfo->cAccelEntries = 0;
229 STDMETHOD(Scroll)(SIZE scrollExtent)
override
236 STDMETHOD(OnUIDeactivate)(BOOL fUndoable)
override
242 STDMETHOD(OnInPlaceDeactivate)()
override
247 STDMETHOD(DiscardUndoState)()
override
252 STDMETHOD(DeactivateAndUndo)()
override
258 STDMETHOD(OnPosRectChange)(LPCRECT lprcPosRect)
override
264 if (m_pOleControl ==
nullptr || lprcPosRect ==
nullptr)
270 HRESULT hRes = m_pOleControl->SetRect(*lprcPosRect, 0);
276 STDMETHOD(ShowContextMenu)(DWORD dwID, POINT __RPC_FAR *ppt,
IUnknown __RPC_FAR *pcmdtReserved, IDispatch __RPC_FAR *pdispReserved)
override
309 STDMETHOD(GetHostInfo)(DOCHOSTUIINFO __RPC_FAR *pInfo)
override
314 pInfo->cbSize =
sizeof(DOCHOSTUIINFO);
321 pInfo->dwFlags = DOCHOSTUIFLAG_NO3DBORDER;
324 pInfo->dwDoubleClick = DOCHOSTUIDBLCLK_DEFAULT;
329 STDMETHOD(ShowUI)(DWORD dwID, IOleInPlaceActiveObject __RPC_FAR *pActiveObject, IOleCommandTarget __RPC_FAR *pCommandTarget, IOleInPlaceFrame __RPC_FAR *pFrame, IOleInPlaceUIWindow __RPC_FAR *pDoc)
override
344 STDMETHOD(HideUI)()
override
351 STDMETHOD(UpdateUI)()
override
360 STDMETHOD(EnableModeless)(BOOL fEnable)
override
368 STDMETHOD(OnDocWindowActivate)(BOOL fActivate)
override
377 STDMETHOD(OnFrameWindowActivate)(BOOL fActivate)
override
384 STDMETHOD(ResizeBorder)(LPCRECT prcBorder, IOleInPlaceUIWindow __RPC_FAR *pUIWindow, BOOL fRameWindow)
override
393 STDMETHOD(TranslateAccelerator)(LPMSG lpMsg,
const GUID __RPC_FAR *pguidCmdGroup, DWORD nCmdID)
override
421 STDMETHOD(GetOptionKeyPath)(LPOLESTR __RPC_FAR *pchKey, DWORD dw)
override
432 STDMETHOD(GetDropTarget)(IDropTarget __RPC_FAR *pDropTarget, IDropTarget __RPC_FAR *__RPC_FAR *ppDropTarget)
override
459 STDMETHOD(GetExternal)(IDispatch __RPC_FAR *__RPC_FAR *ppDispatch)
override
483 *ppDispatch =
nullptr;
486 STDMETHOD(TranslateUrl)(DWORD dwTranslate, OLECHAR __RPC_FAR *pchURLIn, OLECHAR __RPC_FAR *__RPC_FAR *ppchURLOut)
override
497 STDMETHOD(FilterDataObject)(IDataObject __RPC_FAR *pDO, IDataObject __RPC_FAR *__RPC_FAR *ppDORet)
override
526 STDMETHOD(GetBorder)(LPRECT lprectBorder)
override
532 STDMETHOD(RequestBorderSpace)(LPCBORDERWIDTHS pborderwidths)
override
538 STDMETHOD(SetBorderSpace)(LPCBORDERWIDTHS pborderwidths)
override
541 if (pborderwidths !=
nullptr)
543 ::memcpy(&m_BorderWidths, pborderwidths,
sizeof(m_BorderWidths));
547 STDMETHOD(SetActiveObject)(IOleInPlaceActiveObject *pActiveObject, LPCOLESTR pszObjName)
override
554 STDMETHOD(InsertMenus)(HMENU hmenuShared, LPOLEMENUGROUPWIDTHS lpMenuWidths)
override
561 STDMETHOD(SetMenu)(HMENU hmenuShared, HOLEMENU holemenu, HWND hwndActiveObject)
override
569 STDMETHOD(RemoveMenus)(HMENU hmenuShared)
override
575 STDMETHOD(SetStatusText)(LPCOLESTR pszStatusText)
override
581 STDMETHOD(TranslateAccelerator)(LPMSG lpmsg, WORD wID)
override
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define IUNKNOWN_DISAMBIG_R(TYPE)
Definition: IUnknown.h:85
#define UNREFERENCED_PARAMETER(P)
< _WIN32 type thing. get rid of stupid warning.
Definition: SysTypes.h:299
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
#define ASSERT(exp)
Definition: cDebugAssert.h:87
#define HANDLE_NULL
Invalid OS handle for _WIN32. Not invalid OS handle for linux.
Definition: cOSHandle.h:21
STDMETHOD() QueryInterface(const IID &riid, void __RPC_FAR *__RPC_FAR *ppvObject) override
Definition: cRefPtr.h:142
Definition: IUnknown.h:68
static void Zero(void *pData, size_t nSizeBlock) noexcept
Definition: cMem.h:100
Definition: IUnknown.h:34