Mixing Portrait and Landscape in Standard Print and Print Pr
Mats Mеnhav -- manhav@connectum.skurup.se Wednesday, October 09, 1996 -- [ From: Mats Manhav * EMC.Ver #2.5.02 ] -- Environment: MSVC 4.2 Win NT 4.0/Win 95 Hi, In my application I want to print several pages. I will ignore the setting of Landscape/Portrait for some of these pages and always print them in Landscape mode. Is it possible to use the standard print loop of MFC and mix landscape and portrait ? I.e is it possible to set one page in landscape so that the CPrintInfo:: m_rectDraw is adjusted for this in one page, and have another page in Portrait and have CPrintInfo::m_rectDraw adjusted to that. What about the Print Preview in MFC ? Is it at all possible to have the Print Preview show some page in Portrait mode and other in Landscape mode ? Or is the only solution to make my own print and preview loops for this ? Mats -- ========================================================================== Mats Mеnhav (Mats Manhav for 7-bit people) email:manhav@connectum.skurup.se WWW: http://connectum.skurup.se/~manhav FAX: (int) 46 (0) 414 243 05 Phone: (int) 46 (0) 414 243 05 ==========================================================================
LeRoy Baxter -- lbaxter@transport.com Thursday, October 10, 1996 [Mini-digest: 4 responses] Yes, you definitely can. Check out the CDC::StartPage() and CDC::ResetDC() for a start. If you can't get going, perhaps I can find some source code. On Wednesday, October 09, 1996 9:29 PM, Mats Manhav[SMTP:manhav@connectum.skurup.se] wrote: >-- [ From: Mats Manhav * EMC.Ver #2.5.02 ] -- > >Environment: MSVC 4.2 Win NT 4.0/Win 95 >Hi, > >In my application I want to print several pages. >I will ignore the setting of Landscape/Portrait for some of these pages and >always print them in Landscape mode. > >Is it possible to use the standard print loop of MFC and mix landscape and >portrait ? >I.e is it possible to set one page in landscape so that the CPrintInfo:: >m_rectDraw is adjusted for this in one page, and have another page in >Portrait and have CPrintInfo::m_rectDraw adjusted to that. > >What about the Print Preview in MFC ? Is it at all possible to have the >Print Preview show some page in Portrait mode and other in Landscape mode ? > >Or is the only solution to make my own print and preview loops for this ? > >Mats > >-- >========================================================================== >Mats Manhav (Mats Manhav for 7-bit people) >email:manhav@connectum.skurup.se WWW: http://connectum.skurup.se/~manhav >FAX: (int) 46 (0) 414 243 05 Phone: (int) 46 (0) 414 243 05 >========================================================================== > > -----From: David LittleIt might be easier to create a font that is rotated and print that = way.... I am not sure, but I think that it is the third parameter of = CFont::CreateFont, or the nOrientation member of the font structure.... -----From: "C.Zhang" The answer is YES because I am doing it. Checkout the funcion ResetDC and OnPrepareDC. > What about the Print Preview in MFC ? Is it at all possible to have the > Print Preview show some page in Portrait mode and other in Landscape mo= de ? >=20 > Or is the only solution to make my own print and preview loops for this= ? You probably have to redo the CPreviewView not only the loop. -----From: "Jim Schollenberger" You could test for the page number in OnPrepareDC, and switch the mode appropriately. Something like this should work for both printing and print preview: Good Luck, Jim Schollenberger ================================================================= void CTCMView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo) { CView::OnPrepareDC(pDC, pInfo); PRINTDLG* pPrintDlg = new PRINTDLG; AfxGetApp()->GetPrinterDeviceDefaults(pPrintDlg); DEVMODE* lpDevMode = (DEVMODE*)::GlobalLock(pPrintDlg->hDevMode); // Test for page number to see if it should be in portrait mode. switch(pInfo->m_nCurPage) { case 1: // Set page 1 and 3 to portrait mode. case 3: lpDevMode->dmOrientation = DMORIENT_PORTRAIT; break; default: // Default printing is landscape lpDevMode->dmOrientation = DMORIENT_LANDSCAPE; break; } pDC->ResetDC(lpDevMode); ::GlobalUnlock(pPrintDlg->hDevMode); delete pPrintDlg; etc.
| Вернуться в корень Архива |