home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
vc98
/
mfc
/
src
/
oledoc2.cpp
< prev
next >
Wrap
C/C++ Source or Header
|
1998-06-16
|
2KB
|
67 lines
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1998 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;
}
/////////////////////////////////////////////////////////////////////////////