Leaked source code of windows server 2003
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.
 
 
 
 
 
 

153 lines
3.7 KiB

#include "privcpp.h"
const DWORD g_cookie = 111176;
//
// IViewObject2 Methods...
//
HRESULT CPackage::Draw(DWORD dwDrawAspect, LONG lindex,
LPVOID pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw,
LPCRECTL lprcBounds, LPCRECTL lprcWBounds,BOOL (CALLBACK *pfnContinue)(ULONG_PTR),
ULONG_PTR dwContinue)
{
DebugMsg(DM_TRACE,"pack vo - Draw() called.");
_IconDraw(_lpic, hdcDraw, (RECT *)lprcBounds);
return S_OK;
}
HRESULT CPackage::GetColorSet(DWORD dwAspect, LONG lindex,
LPVOID pvAspect, DVTARGETDEVICE *ptd,
HDC hdcTargetDev, LPLOGPALETTE *ppColorSet)
{
HRESULT hr = S_FALSE;
DebugMsg(DM_TRACE,"pack vo - GetColorSet() called.");
if (ppColorSet == NULL)
hr = E_INVALIDARG;
else
*ppColorSet = NULL; // null the out param
return hr;
}
HRESULT CPackage::Freeze(DWORD dwDrawAspect, LONG lindex,
LPVOID pvAspect, LPDWORD pdwFreeze)
{
HRESULT hr = S_OK;
DebugMsg(DM_TRACE,"pack vo - Freeze() called.");
if (pdwFreeze == NULL)
hr = E_INVALIDARG;
else
{
if (_fFrozen)
{
*pdwFreeze = g_cookie;
}
else
{
//
// This is where we would take a snapshot of the icon to use as
// the "frozen" image in subsequent routines. For now, we just
// return the cookie. Draw() will use the current icon regardless
// of the fFrozen flag.
//
_fFrozen = TRUE;
*pdwFreeze = g_cookie;
}
}
return hr;
}
HRESULT CPackage::Unfreeze(DWORD dwFreeze)
{
HRESULT hr = S_OK;
DebugMsg(DM_TRACE,"pack vo - Unfreeze() called.");
// If the pass us an invalid cookie or we're not frozen then bail
if (dwFreeze != g_cookie || !_fFrozen)
hr = OLE_E_NOCONNECTION;
else
{
//
// This is where we'd get rid of the frozen presentation we saved in
// IViewObject::Freeze().
//
_fFrozen = FALSE;
}
return hr;
}
HRESULT CPackage::SetAdvise(DWORD dwAspects, DWORD dwAdvf,
LPADVISESINK pAdvSink)
{
DebugMsg(DM_TRACE,"pack vo - SetAdvise() called.");
if (_pViewSink)
_pViewSink->Release();
_pViewSink = pAdvSink;
_dwViewAspects = dwAspects;
_dwViewAdvf = dwAdvf;
if (_pViewSink)
_pViewSink->AddRef();
return S_OK;
}
HRESULT CPackage::GetAdvise(LPDWORD pdwAspects, LPDWORD pdwAdvf,
LPADVISESINK *ppAdvSink)
{
HRESULT hr = S_OK;
DebugMsg(DM_TRACE,"pack vo - GetAdvise() called.");
if (!ppAdvSink || !pdwAdvf || !pdwAspects)
hr = E_INVALIDARG;
else
{
*ppAdvSink = _pViewSink;
_pViewSink->AddRef();
if (pdwAspects != NULL)
*pdwAspects = _dwViewAspects;
if (pdwAdvf != NULL)
*pdwAdvf = _dwViewAdvf;
}
return hr;
}
HRESULT CPackage::GetExtent(DWORD dwAspect, LONG lindex,
DVTARGETDEVICE *ptd, LPSIZEL pszl)
{
HRESULT hr = S_OK;
DebugMsg(DM_TRACE,"pack vo - GetExtent() called.");
if (pszl == NULL)
hr = E_INVALIDARG;
if (!_lpic)
hr = OLE_E_BLANK;
if(SUCCEEDED(hr))
{
pszl->cx = _lpic->rc.right;
pszl->cy = _lpic->rc.bottom;
pszl->cx = MulDiv(pszl->cx,HIMETRIC_PER_INCH,DEF_LOGPIXELSX);
pszl->cy = MulDiv(pszl->cy,HIMETRIC_PER_INCH,DEF_LOGPIXELSY);
}
return hr;
}