IVIEWOBJ.CPP
/* 
 * IVIEWOBJ.CPP 
 * 
 * Template IViewObject2 interface implementation. 
 * 
 * Copyright (c)1993-1996 Microsoft Corporation, All Rights Reserved 
 * 
 * Kraig Brockschmidt, Software Design Engineer 
 * Microsoft Systems Developer Relations 
 * 
 * Internet  :  kraigb@microsoft.com 
 * Compuserve:  >INTERNET:kraigb@microsoft.com 
 */ 
 
 
#include "iviewobj.h" 
 
 
/* 
 * CImpIViewObject2::CImpIViewObject2 
 * CImpIViewObject2::~CImpIViewObject2 
 * 
 * Parameters (Constructor): 
 *  pObj            LPVOID of the object we're in. 
 *  pUnkOuter       LPUNKNOWN to which we delegate. 
 */ 
 
CImpIViewObject2::CImpIViewObject2(LPVOID pObj, LPUNKNOWN pUnkOuter) 
    { 
    m_cRef=0; 
    m_pObj=pObj; 
    m_pUnkOuter=pUnkOuter; 
    return; 
    } 
 
CImpIViewObject2::~CImpIViewObject2(void) 
    { 
    return; 
    } 
 
 
 
 
/* 
 * CImpIViewObject2::QueryInterface 
 * CImpIViewObject2::AddRef 
 * CImpIViewObject2::Release 
 * 
 * Purpose: 
 *  Delegating IUnknown members for CImpIViewObject2. 
 */ 
 
STDMETHODIMP CImpIViewObject2::QueryInterface(REFIID riid 
    , LPVOID *ppv) 
    { 
    return m_pUnkOuter->QueryInterface(riid, ppv); 
    } 
 
 
STDMETHODIMP_(ULONG) CImpIViewObject2::AddRef(void) 
    { 
    ++m_cRef; 
    return m_pUnkOuter->AddRef(); 
    } 
 
STDMETHODIMP_(ULONG) CImpIViewObject2::Release(void) 
    { 
    --m_cRef; 
    return m_pUnkOuter->Release(); 
    } 
 
 
 
 
 
 
/* 
 * CImpIViewObject2::Draw 
 * 
 * Purpose: 
 *  Draws the object on the given hDC specifically for the requested 
 *  aspect, device, and within the appropriate bounds. 
 * 
 * Parameters: 
 *  dwAspect        DWORD aspect to draw. 
 *  lindex          LONG index of the piece to draw. 
 *  pvAspect        LPVOID for extra information, always NULL. 
 *  ptd             DVTARGETDEVICE * containing device 
 *                  information. 
 *  hICDev          HDC containing the IC for the device. 
 *  hDC             HDC on which to draw. 
 *  pRectBounds     LPCRECTL describing the rectangle in which 
 *                  to draw. 
 *  pRectWBounds    LPCRECTL describing the placement rectangle 
 *                  if part of what you draw is another metafile. 
 *  pfnContinue     Function to call periodically during 
 *                  long repaints. 
 *  dwContinue      DWORD extra information to pass to the 
 *                  pfnContinue. 
 * 
 * Return Value: 
 *  HRESULT         NOERROR or a general error value. 
 */ 
 
STDMETHODIMP CImpIViewObject2::Draw(DWORD dwAspect, LONG lindex 
    , void * pvAspect, DVTARGETDEVICE * ptd, HDC hICDev 
    , HDC hDC, LPCRECTL pRectBounds, LPCRECTL pRectWBounds 
    , BOOL (CALLBACK * pfnContinue) (DWORD), DWORD dwContinue) 
    { 
    return E_NOTIMPL; 
    } 
 
 
 
 
/* 
 * CImpIViewObject2::GetColorSet 
 * 
 * Purpose: 
 *  Retrieves the color palette used by the object. 
 * 
 * Parameters: 
 *  dwAspect        DWORD aspect of interest. 
 *  lindex          LONG piece of interest. 
 *  pvAspect        LPVOID with extra information, always NULL. 
 *  ptd             DVTARGETDEVICE * containing device info. 
 *  hICDev          HDC containing the IC for the device. 
 *  ppColorSet      LPLOGPALETTE * into which to return the 
 *                  pointer to the palette in this color set. 
 * 
 * Return Value: 
 *  HRESULT         NOERROR or a general error value. 
 */ 
 
STDMETHODIMP CImpIViewObject2::GetColorSet(DWORD dwDrawAspect 
    , LONG lindex, LPVOID pvAspect, DVTARGETDEVICE * ptd 
    , HDC hICDev, LPLOGPALETTE * ppColorSet) 
    { 
    return E_NOTIMPL; 
    } 
 
 
 
 
 
 
/* 
 * CImpIViewObject2::Freeze 
 * 
 * Purpose: 
 *  Freezes the view of a particular aspect such that data 
 *  changes do not affect the view. 
 * 
 * Parameters: 
 *  dwAspect        DWORD aspect to freeze. 
 *  lindex          LONG piece index under consideration. 
 *  pvAspect        LPVOID for further information, always NULL. 
 *  pdwFreeze       LPDWORD in which to return the key. 
 * 
 * Return Value: 
 *  HRESULT         NOERROR or a general error value. 
 */ 
 
STDMETHODIMP CImpIViewObject2::Freeze(DWORD dwAspect, LONG lindex 
    , LPVOID pvAspect, LPDWORD pdwFreeze) 
    { 
    return E_NOTIMPL; 
    } 
 
 
 
 
 
 
/* 
 * CImpIViewObject2::Unfreeze 
 * 
 * Purpose: 
 *  Thaws an aspect frozen in Freeze. 
 * 
 * Parameters: 
 *  dwFreeze        DWORD key returned from Freeze. 
 * 
 * Return Value: 
 *  HRESULT         NOERROR or a general error value. 
 */ 
 
STDMETHODIMP CImpIViewObject2::Unfreeze(DWORD dwFreeze) 
    { 
    return E_NOTIMPL; 
    } 
 
 
 
 
 
/* 
 * CImpIViewObject2::SetAdvise 
 * 
 * Purpose: 
 *  Provides an advise sink to the view object enabling 
 *  notifications for a specific aspect. 
 * 
 * Parameters: 
 *  dwAspects       DWORD describing the aspects of interest. 
 *  dwAdvf          DWORD containing advise flags. 
 *  pIAdviseSink    LPADVISESINK to notify. 
 * 
 * Return Value: 
 *  HRESULT         NOERROR or a general error value. 
 */ 
 
STDMETHODIMP CImpIViewObject2::SetAdvise(DWORD dwAspects 
    , DWORD dwAdvf, LPADVISESINK pIAdviseSink) 
    { 
    return E_NOTIMPL; 
    } 
 
 
 
 
/* 
 * CImpIViewObject2::GetAdvise 
 * 
 * Purpose: 
 *  Returns the last known IAdviseSink seen by SetAdvise. 
 * 
 * Parameters: 
 *  pdwAspects      LPDWORD in which to store the last 
 *                  requested aspects. 
 *  pdwAdvf         LPDWORD in which to store the last 
 *                  requested flags. 
 *  ppIAdvSink      LPADVISESINK * in which to store the 
 *                  IAdviseSink. 
 * 
 * Return Value: 
 *  HRESULT         NOERROR or a general error value. 
 */ 
 
STDMETHODIMP CImpIViewObject2::GetAdvise(DWORD *pAspects 
    , DWORD *pAdvf, LPADVISESINK *ppAdvSink) 
    { 
    return E_NOTIMPL; 
    } 
 
 
 
 
 
 
/* 
 * CImpIViewObject2::GetExtent 
 * 
 * Purpose: 
 *  Retrieves the extents of the object's display. 
 * 
 * Parameters: 
 *  dwAspect        DWORD of the aspect of interest. 
 *  lindex          LONG index of the piece of interest. 
 *  ptd             DVTARGETDEVICE * with device information. 
 *  pszl            LPSIZEL to the structure in which to return 
 *                  the extents. 
 * 
 * Return Value: 
 *  HRESULT         NOERROR or a general error value. 
 */ 
 
STDMETHODIMP CImpIViewObject2::GetExtent(DWORD dwAspect, LONG lindex 
    , DVTARGETDEVICE *ptd, LPSIZEL pszl) 
    { 
    return E_NOTIMPL; 
    }