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.
|
|
/*++
Copyright (C) 1993-1999 Microsoft Corporation
Module Name:
iipaobj.cpp
Abstract:
IOleInPlaceActiveObject interface implementation for Polyline
--*/
#include "polyline.h"
#include "unkhlpr.h"
#include "unihelpr.h"
#include "utils.h"
/*
* CImpIOleInPlaceActiveObject::CImpIOleInPlaceActiveObject * CImpIOleInPlaceActiveObject::~CImpIOleInPlaceActiveObject * * Parameters (Constructor): * pObj PCPolyline of the object we're in. * pUnkOuter LPUNKNOWN to which we delegate. */ IMPLEMENT_CONTAINED_CONSTRUCTOR(CPolyline, CImpIOleInPlaceActiveObject) IMPLEMENT_CONTAINED_DESTRUCTOR(CImpIOleInPlaceActiveObject)
IMPLEMENT_CONTAINED_ADDREF(CImpIOleInPlaceActiveObject) IMPLEMENT_CONTAINED_RELEASE(CImpIOleInPlaceActiveObject)
// CImpIOleInPlaceActiveObject::QueryInterface
STDMETHODIMP CImpIOleInPlaceActiveObject::QueryInterface(REFIID riid , PPVOID ppv) { /*
* This interface should be stand-alone on an object such that a * container cannot QueryInterface for it through any other * object interface, relying instead of calls to SetActiveObject * for it. By implementing QueryInterface here ourselves, we * prevent such abuses. Note that reference counting still uses * CFigure. */
*ppv=NULL;
if (IID_IUnknown==riid || IID_IOleWindow==riid || IID_IOleInPlaceActiveObject==riid) *ppv=this;
//AddRef any interface we'll return.
if (NULL!=*ppv) { ((LPUNKNOWN)*ppv)->AddRef(); return NOERROR; }
return ResultFromScode(E_NOINTERFACE); }
/*
* CImpIOleInPlaceActiveObject::GetWindow * * Purpose: * Retrieves the handle of the window associated with the object on * which this interface is implemented. * * Parameters: * phWnd HWND * in which to store the window handle. * * Return Value: * HRESULT NOERROR if successful, E_FAIL if there is no * window. */
STDMETHODIMP CImpIOleInPlaceActiveObject::GetWindow(HWND *phWnd) { *phWnd=m_pObj->m_pHW->Window();; return NOERROR; }
/*
* CImpIOleInPlaceActiveObject::ContextSensitiveHelp * * Purpose: * Instructs the object on which this interface is implemented to * enter or leave a context-sensitive help mode. * * Parameters: * fEnterMode BOOL TRUE to enter the mode, FALSE otherwise. * * Return Value: * HRESULT NOERROR or an error code. */
STDMETHODIMP CImpIOleInPlaceActiveObject::ContextSensitiveHelp ( BOOL /* fEnterMode */ ) { return ResultFromScode(E_NOTIMPL); }
/*
* CImpIOleInPlaceActiveObject::TranslateAccelerator * * Purpose: * Requests that the active in-place object translate the message * given in pMSG if appropriate. This is only called for DLL * servers where the container's message loop is running. EXE * servers have control of the message loop so this will not be * called in such cases. * * Parameters: * pMSG LPMSG to the message to translate. * * Return Value: * HRESULT NOERROR if translates, S_FALSE if not. */
STDMETHODIMP CImpIOleInPlaceActiveObject::TranslateAccelerator (LPMSG pMSG) { // Don't handle keys unless we are UI active
if (!m_pObj->m_fUIActive) return S_FALSE;
// Delegate to the control class
return m_pObj->m_pCtrl->TranslateAccelerators(pMSG); }
/*
* CImpIOleInPlaceActiveObject::OnFrameWindowActivate * * Purpose: * Informs the in-place object that the container's frame window * was either activated or deactivated. Not currently used. * * Parameters: * fActivate BOOL TRUE if the frame is active, * FALSE otherwise * * Return Value: * HRESULT NOERROR or an error code. */
STDMETHODIMP CImpIOleInPlaceActiveObject::OnFrameWindowActivate ( BOOL /* fActivate */) { return ResultFromScode(E_NOTIMPL); }
/*
* CImpIOleInPlaceActiveObject::OnDocWindowActivate * * Purpose: * Informs the in-place object that the document window in the * container is either becoming active or deactive. On this call * the object must either add or remove frame-level tools, * including the mixed menu, depending on fActivate. * * Parameters: * fActivate BOOL TRUE if the document is active, * FALSE otherwise * * Return Value: * HRESULT NOERROR or an error code. */
STDMETHODIMP CImpIOleInPlaceActiveObject::OnDocWindowActivate (BOOL fActivate) {
USES_CONVERSION
if (NULL==m_pObj->m_pIOleIPFrame) return NOERROR;
if (fActivate) { m_pObj->m_pIOleIPFrame->SetActiveObject(this, T2W(ResourceString(IDS_USERTYPE)));
m_pObj->m_pIOleIPFrame->SetMenu(m_pObj->m_hMenuShared , m_pObj->m_hOLEMenu, m_pObj->m_pCtrl->Window());
} else { m_pObj->m_pIOleIPFrame->SetActiveObject(NULL, NULL); }
return NOERROR; }
/*
* CImpIOleInPlaceActiveObject::ResizeBorder * * Purpose: * Informs the object that the frame or document size changed in * which case the object may need to resize any of its frame or * document-level tools to match. * * Parameters: * pRect LPCRECT indicating the new size of the window * of interest. * pIUIWindow LPOLEINPLACEUIWINDOW pointing to an * IOleInPlaceUIWindow interface on the container * object of interest. We use this to do * border-space negotiation. * * fFrame BOOL indicating if the frame was resized (TRUE) * or the document (FALSE) * * Return Value: * HRESULT NOERROR or an error code. */
STDMETHODIMP CImpIOleInPlaceActiveObject::ResizeBorder ( LPCRECT, /* pRect */ LPOLEINPLACEUIWINDOW, /* pIUIWindow */ BOOL /* fFrame */ ) { return ResultFromScode(E_NOTIMPL); }
/*
* CImpIOleInPlaceActiveObject::EnableModeless * * Purpose: * Instructs the object to show or hide any modeless popup windows * that it may be using when activated in-place. * * Parameters: * fEnable BOOL indicating to enable/show the windows * (TRUE) or to hide them (FALSE). * * Return Value: * HRESULT NOERROR or an error code. */
STDMETHODIMP CImpIOleInPlaceActiveObject::EnableModeless ( BOOL /* fActivate */ ) { return ResultFromScode(E_NOTIMPL); }
|