// PrntDoc.cpp : implementation of the CPrintingDoc class // #include "stdafx.h" #include "Prnt.h" #include "PrntDoc.h" #include "PrntView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPrintingDoc IMPLEMENT_DYNCREATE(CPrintingDoc, CDocument) BEGIN_MESSAGE_MAP(CPrintingDoc, CDocument) //{{AFX_MSG_MAP(CPrintingDoc) // NOTE - the ClassWizard will add and remove mapping macros here. // DO NOT EDIT what you see in these blocks of generated code! //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPrintingDoc construction/destruction CPrintingDoc::CPrintingDoc() { // TODO: add one-time construction code here } CPrintingDoc::~CPrintingDoc() { } BOOL CPrintingDoc::OnNewDocument() { if (!CDocument::OnNewDocument()) return FALSE; // TODO: add reinitialization code here // (SDI documents will reuse this document) return TRUE; } ///////////////////////////////////////////////////////////////////////////// // CPrintingDoc serialization void CPrintingDoc::Serialize(CArchive& ar) { if (ar.IsStoring()) { // TODO: add storing code here } else { // TODO: add loading code here } } ///////////////////////////////////////////////////////////////////////////// // CPrintingDoc diagnostics #ifdef _DEBUG void CPrintingDoc::AssertValid() const { CDocument::AssertValid(); } void CPrintingDoc::Dump(CDumpContext& dc) const { CDocument::Dump(dc); } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CPrintingDoc commands BOOL CPrintingDoc::OnOpenDocument(LPCTSTR lpszPathName) { L_INT nRet; if (!CDocument::OnOpenDocument(lpszPathName)) return FALSE; CPrintingApp* pApp=(CPrintingApp*)AfxGetApp(); CPrintingView* pView= (CPrintingView*)GetView(); FILEINFO fInfo; LOADFILEOPTION LoadFileOption; memset(&fInfo, 0, sizeof(FILEINFO)); memset(&LoadFileOption, 0, sizeof(LOADFILEOPTION)); LFile file; file.SetFileName( (L_TCHAR L_FAR*) lpszPathName); file.GetInfo(&fInfo, sizeof(FILEINFO)); if (fInfo.TotalPages < pApp->m_nPageNumber) pApp->m_nPageNumber = 0; if (fInfo.TotalPages < 2) { nRet =pView->m_LeadBmp.Load((L_TCHAR L_FAR *) lpszPathName,fInfo.BitsPerPixel,ORDER_BGRORGRAY,NULL,NULL); } else { nRet =pView->m_bmpList.Load((L_TCHAR L_FAR *) lpszPathName,0,ORDER_BGR); } if(nRet != SUCCESS) LBase::DisplayError (NULL, nRet); pView->HandlePalette(WM_QUERYNEWPALETTE,pView->m_hWnd); return ( (nRet == SUCCESS) ? TRUE : FALSE ) ; } CView* CPrintingDoc::GetView() { POSITION pos=GetFirstViewPosition(); return ( GetNextView(pos) ); } void CPrintingDoc::OnCloseDocument() { POSITION pos=GetFirstViewPosition(); while (pos) { CPrintingView* pView=(CPrintingView*)GetNextView(pos); if (pView) { if (pView->m_bPreview) { pView->m_bPreview=FALSE; pView->m_bIsOnePage=FALSE; pView->ShowBar(pView->m_bPreview); pView->ClosePreview(); } else { pView->m_bPreview=FALSE; pView->m_bIsOnePage=FALSE; pView->ShowBar(pView->m_bPreview); delete [] pView->m_pZoomFact; CDocument::OnCloseDocument(); } } } }