I think the following code maybe very useful to some one of you to change the printer to landscape:
RegardsCode:void CMyApp::SetLandscape() { LPDEVNAMES lpDevNames; LPTSTR lpszDriverName, lpszDeviceName, lpszPortName; HANDLE hPrinter; PRINTDLG pd; // Get default printer settings. PRINTDLG pd; pd.lStructSize = (DWORD) sizeof(PRINTDLG); if (GetPrinterDeviceDefaults(&pd)) { // Lock memory handle. DEVMODE FAR* pDevMode = (DEVMODE FAR*)::GlobalLock(m_hDevMode); if (pDevMode) { // Change printer settings in here. pDevMode->dmOrientation = DMORIENT_LANDSCAPE; // Unlock memory handle. lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames); lpszDriverName = (LPTSTR )lpDevNames + lpDevNames->wDriverOffset; lpszDeviceName = (LPTSTR )lpDevNames + lpDevNames->wDeviceOffset; lpszPortName = (LPTSTR )lpDevNames + lpDevNames->wOutputOffset; ::OpenPrinter(lpszDeviceName, &hPrinter, NULL); ::DocumentProperties(NULL,hPrinter,lpszDeviceName,pDevMode, pDevMode, DM_IN_BUFFER|DM_OUT_BUFFER); // Sync the pDevMode. // See SDK help for DocumentProperties for more info. ::ClosePrinter(hPrinter); ::GlobalUnlock(m_hDevNames); ::GlobalUnlock(m_hDevMode); } } }
Jack
------------------------------------------------------------------------------
XD++ MFC Library with 100% source code home : http://www.********.net




Reply With Quote