Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

66 lines
1.8 KiB

// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1995 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
#include "stdafx.h"
#ifdef AFX_OLE_SEG
#pragma code_seg(AFX_OLE_SEG)
#endif
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// COleDocument printing support
BOOL COleDocument::ApplyPrintDevice(const DVTARGETDEVICE* ptd)
{
ASSERT_VALID(this);
ASSERT(ptd == NULL || AfxIsValidAddress(ptd, (size_t)ptd->tdSize, FALSE));
// allocate copy of target device
if (ptd != NULL)
{
DVTARGETDEVICE* ptdNew = _AfxOleCopyTargetDevice((DVTARGETDEVICE*)ptd);
if (ptdNew == NULL)
return FALSE;
ptd = ptdNew;
}
// remove old target device from memory
CoTaskMemFree(m_ptd);
m_ptd = (DVTARGETDEVICE*)ptd;
// Note: updating all the client items does not refresh the pres. cache
POSITION pos = GetStartPosition();
COleClientItem* pItem;
while ((pItem = GetNextClientItem(pos)) != NULL)
{
// update all the client items with new target device
pItem->SetPrintDevice(ptd);
}
return TRUE;
}
BOOL COleDocument::ApplyPrintDevice(const PRINTDLG* ppd)
{
ASSERT_VALID(this);
ASSERT(ppd == NULL || AfxIsValidAddress(ppd, sizeof(*ppd), FALSE));
DVTARGETDEVICE* ptd = NULL;
if (ppd != NULL)
ptd = _AfxOleCreateTargetDevice((PRINTDLG*)ppd);
BOOL bResult = ApplyPrintDevice(ptd);
CoTaskMemFree(ptd);
return bResult;
}
/////////////////////////////////////////////////////////////////////////////