IVIEWOBJ.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:

Windows编程

开发平台:

Visual C++

  1. /*
  2.  * IVIEWOBJ.CPP
  3.  *
  4.  * Template IViewObject interface implementation.
  5.  *
  6.  * Copyright (c)1993-1995 Microsoft Corporation, All Rights Reserved
  7.  *
  8.  * Kraig Brockschmidt, Microsoft
  9.  * Internet  :  kraigb@microsoft.com
  10.  * Compuserve:  >INTERNET:kraigb@microsoft.com
  11.  */
  12. #include "iviewobj.h"
  13. /*
  14.  * CImpIViewObject::CImpIViewObject
  15.  * CImpIViewObject::~CImpIViewObject
  16.  *
  17.  * Parameters (Constructor):
  18.  *  pObj            LPVOID of the object we're in.
  19.  *  pUnkOuter       LPUNKNOWN to which we delegate.
  20.  */
  21. CImpIViewObject::CImpIViewObject(LPVOID pObj, LPUNKNOWN pUnkOuter)
  22.     {
  23.     m_cRef=0;
  24.     m_pObj=pObj;
  25.     m_pUnkOuter=pUnkOuter;
  26.     return;
  27.     }
  28. CImpIViewObject::~CImpIViewObject(void)
  29.     {
  30.     return;
  31.     }
  32. /*
  33.  * CImpIViewObject::QueryInterface
  34.  * CImpIViewObject::AddRef
  35.  * CImpIViewObject::Release
  36.  *
  37.  * Purpose:
  38.  *  Delegating IUnknown members for CImpIViewObject.
  39.  */
  40. STDMETHODIMP CImpIViewObject::QueryInterface(REFIID riid
  41.     , LPVOID *ppv)
  42.     {
  43.     return m_pUnkOuter->QueryInterface(riid, ppv);
  44.     }
  45. STDMETHODIMP_(ULONG) CImpIViewObject::AddRef(void)
  46.     {
  47.     ++m_cRef;
  48.     return m_pUnkOuter->AddRef();
  49.     }
  50. STDMETHODIMP_(ULONG) CImpIViewObject::Release(void)
  51.     {
  52.     --m_cRef;
  53.     return m_pUnkOuter->Release();
  54.     }
  55. /*
  56.  * CImpIViewObject::Draw
  57.  *
  58.  * Purpose:
  59.  *  Draws the object on the given hDC specifically for the requested
  60.  *  aspect, device, and within the appropriate bounds.
  61.  *
  62.  * Parameters:
  63.  *  dwAspect        DWORD aspect to draw.
  64.  *  lindex          LONG index of the piece to draw.
  65.  *  pvAspect        LPVOID for extra information, always NULL.
  66.  *  ptd             DVTARGETDEVICE * containing device
  67.  *                  information.
  68.  *  hICDev          HDC containing the IC for the device.
  69.  *  hDC             HDC on which to draw.
  70.  *  pRectBounds     LPCRECTL describing the rectangle in which
  71.  *                  to draw.
  72.  *  pRectWBounds    LPCRECTL describing the placement rectangle
  73.  *                  if part of what you draw is another metafile.
  74.  *  pfnContinue     Function to call periodically during
  75.  *                  long repaints.
  76.  *  dwContinue      DWORD extra information to pass to the
  77.  *                  pfnContinue.
  78.  */
  79. STDMETHODIMP CImpIViewObject::Draw(DWORD dwAspect, LONG lindex
  80.     , void *pvAspect, DVTARGETDEVICE *ptd, HDC hICDev
  81.     , HDC hDC, LPCRECTL pRectBounds, LPCRECTL pRectWBounds
  82.     , BOOL (CALLBACK *pfnContinue) (DWORD), DWORD dwContinue)
  83.     {
  84.     return ResultFromScode(E_NOTIMPL);
  85.     }
  86. /*
  87.  * CImpIViewObject::GetColorSet
  88.  *
  89.  * Purpose:
  90.  *  Retrieves the color palette used by the object.
  91.  *
  92.  * Parameters:
  93.  *  dwAspect        DWORD aspect of interest.
  94.  *  lindex          LONG piece of interest.
  95.  *  pvAspect        LPVOID with extra information, always NULL.
  96.  *  ptd             DVTARGETDEVICE * containing device info.
  97.  *  hICDev          HDC containing the IC for the device.
  98.  *  ppColorSet      LPLOGPALETTE * into which to return the
  99.  *                  pointer to the palette in this color set.
  100.  */
  101. STDMETHODIMP CImpIViewObject::GetColorSet(DWORD dwDrawAspect
  102.     , LONG lindex, LPVOID pvAspect, DVTARGETDEVICE *ptd
  103.     , HDC hICDev, LPLOGPALETTE *ppColorSet)
  104.     {
  105.     return ResultFromScode(E_NOTIMPL);
  106.     }
  107. /*
  108.  * CImpIViewObject::Freeze
  109.  *
  110.  * Purpose:
  111.  *  Freezes the view of a particular aspect such that data
  112.  *  changes do not affect the view.
  113.  *
  114.  * Parameters:
  115.  *  dwAspect        DWORD aspect to freeze.
  116.  *  lindex          LONG piece index under consideration.
  117.  *  pvAspect        LPVOID for further information, always NULL.
  118.  *  pdwFreeze       LPDWORD in which to return the key.
  119.  */
  120. STDMETHODIMP CImpIViewObject::Freeze(DWORD dwAspect, LONG lindex
  121.     , LPVOID pvAspect, LPDWORD pdwFreeze)
  122.     {
  123.     return ResultFromScode(E_NOTIMPL);
  124.     }
  125. /*
  126.  * CImpIViewObject::Unfreeze
  127.  *
  128.  * Purpose:
  129.  *  Thaws an aspect frozen in Freeze.
  130.  *
  131.  * Parameters:
  132.  *  dwFreeze        DWORD key returned from Freeze.
  133.  */
  134. STDMETHODIMP CImpIViewObject::Unfreeze(DWORD dwFreeze)
  135.     {
  136.     return ResultFromScode(E_NOTIMPL);
  137.     }
  138. /*
  139.  * CImpIViewObject::SetAdvise
  140.  *
  141.  * Purpose:
  142.  *  Provides an advise sink to the view object enabling
  143.  *  notifications for a specific aspect.
  144.  *
  145.  * Parameters:
  146.  *  dwAspects       DWORD describing the aspects of interest.
  147.  *  dwAdvf          DWORD containing advise flags.
  148.  *  pIAdviseSink    LPADVISESINK to notify.
  149.  */
  150. STDMETHODIMP CImpIViewObject::SetAdvise(DWORD dwAspects
  151.     , DWORD dwAdvf, LPADVISESINK pIAdviseSink)
  152.     {
  153.     return ResultFromScode(E_NOTIMPL);
  154.     }
  155. /*
  156.  * CImpIViewObject::GetAdvise
  157.  *
  158.  * Purpose:
  159.  *  Returns the last known IAdviseSink seen by SetAdvise.
  160.  *
  161.  * Parameters:
  162.  *  pdwAspects      LPDWORD in which to store the last
  163.  *                  requested aspects.
  164.  *  pdwAdvf         LPDWORD in which to store the last
  165.  *                  requested flags.
  166.  *  ppIAdvSink      LPADVISESINK * in which to store the
  167.  *                  IAdviseSink.
  168.  */
  169. STDMETHODIMP CImpIViewObject::GetAdvise(DWORD *pAspects
  170.     , DWORD *pAdvf, LPADVISESINK *ppAdvSink)
  171.     {
  172.     return ResultFromScode(E_NOTIMPL);
  173.     }