Vista preliminar en modo horizontal

12/08/2004 - 00:18 por Willser F. González C. | Informe spam
Hola Grupo,

Tengo un formulario basado en CFormView y estoy generando algunos listados
en el modo de vista preliminar.

Hasta aquí todo va bien, pero ahora, tengo un listado que requiere que se
muestre en modo horizontal. He tratado de hacerlo por el lado del DEVMODE
pero no logro que la vista preliminar se muestre horizontal.

Los cambios que realizo por medio del DEVMODE se ven reflejados cuando le
doy propiedades a la impresora actualmente seleccionada.

Cómo podría cambiar este modo para el Print Preview.?

Gracias.

Willser F.
willser@latinmail.com
 

Leer las respuestas

#1 Willser F. González C.
12/08/2004 - 16:01 | Informe spam
Por si a alguien le interesa, encontré esta solución, supongo que hay otras.


Dentro de la función OnPreparePrinting(...) se puede hacer el ajuste, este
aplica ya sea para Print Preview o para la impresora seleccionada.

BOOL CImageDemoView::OnPreparePrinting(CPrintInfo *pInfo)
{
SetPaperOrientation(2); // 2: Horizontal. 1: Vertical.

return (DoPreparePrinting(pInfo));
}


void SetPaperOrientation(unsigned char i_ucOrientation)
{
DEVMODE *l_pdmDevMode = NULL;

PRINTDLG l_pdPrinter;


theApp.GetPrinterDeviceDefaults(&l_pdPrinter); // theApp es de tipo
CWinApp.

l_pdmDevMode = (DEVMODE *) GlobalLock(l_pdPrinter.hDevMode);

if (l_pdmDevMode == NULL)
return;

if (l_pdmDevMode->dmFields & DM_ORIENTATION)
l_pdmDevMode->dmOrientation = i_ucOrientation; // DMORIENT_PORTRAIT (1) or
DMORIENT_LANDSCAPE (2)

GlobalUnlock(l_pdPrinter.hDevMode);
}

Willser F.

Preguntas similares