home *** CD-ROM | disk | FTP | other *** search
- // 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;
- }
-
- /////////////////////////////////////////////////////////////////////////////
-