impresion de página apaisada DMORIENT_LANDSCAPE

09/04/2005 - 01:09 por Mateu Perelló | Informe spam
Hola grupo tengo el siguiente problema
defino el siguiente codigo para imprimir un listado apaisado pero no lo
llego a conseguir el DMORIENT_LANDSCAPE parece que no lo he definido bien
,podriais ayudarme?
Muchas grácias de antemano!!!!

CDC hDC;
DOCINFO di;
DEVMODE dm;
int x0,y;
int nNumLinees=0;
int nNumPagina=1;
CString szTmp=_T("");
hDC.CreateDC("WINSPOOL",theApp.m_szImpresoraAlb,NULL,NULL);
memset(&dm,0,sizeof(dm));
dm.dmSpecVersion=DM_SPECVERSION;
dm.dmSize=sizeof(DEVMODE);
dm.dmFields=DM_ORIENTATION;
//dm.dmOrientation=DMORIENT_PORTRAIT;
dm.dmOrientation=DMORIENT_LANDSCAPE;
memset(&di,0,sizeof(DOCINFO));
di.cbSize=sizeof(DOCINFO);
szTmp.Format("listado");
di.lpszDocName=szTmp;
//hDC.m_bPrinting=true;
hDC.SaveDC();
if(hDC.StartDoc(&di)!=SP_ERROR)
{
int ModoMapaAnt=SetMapMode(hDC,MM_HIENGLISH);
hDC.StartPage();
hDC.ResetDC(&dm);
hDC.SelectObject(&pnPincell);

. y aqui empiezo a imprimir

Preguntas similare

Leer las respuestas

#1 Rodrigo Corral [MVP]
09/04/2005 - 12:16 | Informe spam
Creo que la manera correcta de hacerlo es:

CDC dc; // dc para imprimir
CPrintDialog dlg(FALSE); // Dialogo para establecer la impresora
UINT prtOrient; // Orientación actual

// Establecer la orientación actual y guardar la anterior
prtOrient = ((CDialogApp *)AfxGetApp())->
PrinterOrientation(DMORIENT_LANDSCAPE);

// Inicializar el cuadro de dialog
AfxGetApp()->GetPrinterDeviceDefaults(&dlg.m_pd);

if (dlg.DoModal() == IDOK)
{
// Código para imprimri
}

// Restaura la orientación de la pagina
((CDialogApp *)AfxGetApp())->PrinterOrientation(prtOrient);


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#2 Mateu Perelló
09/04/2005 - 16:19 | Informe spam
Muchas gracias Rodrigo ,pero no me sirve porque es para un programa en el
cual se tienen seleccionadas varias impresoras,una para albaranes ,otra
pedidos,otra etiquetas etc.. por eso necesito crear el CDC sin mostrar
ningún dialogo de selección de impresora ya que segun que documento ya tiene
una impresora predeterminada y asi los usuarios no deben seleccionar
ninguna impresora,
he probado
// Establecer la orientación actual y guardar la anterior
prtOrient = ((CDialogApp *)AfxGetApp())->
PrinterOrientation(DMORIENT_LANDSCAPE);
// Restaura la orientación de la pagina
((CDialogApp *)AfxGetApp())->PrinterOrientation(prtOrient);



pero no me reconoce el CDialogApp

Muchas gracias
Atentamente Mateu Perelló
Respuesta Responder a este mensaje
#3 Hernán
09/04/2005 - 16:52 | Informe spam
La doc de DocumentProperties() te dice como hacerlo:

1. OpenPrinter()
2. Fallas DocumentProperties(), para obtener el tamaño del búfer.
3. Creas el búfer.
4. Invocas a DocumentProperties() para que te llene el búfer
(DM_OUT_BUFFER).
5. Editas los campos que te interesan de la parte pública del búfer (el
DEVMODE).
6. Vuelves a invocar a DocumentProperties() con el mismo búfer como
cuarto y quinto argumento, para que haga lo suyo si es que tuviera que
hacer algo (DM_IN_BUFFER | DM_OUT_BUFFER).
7. ClosePrinter()
8. Invocas a CreateDC() con el búfer como último argumento.

Hernán (29)
quilmes (ar)
Respuesta Responder a este mensaje
#4 Rodrigo Corral [MVP]
10/04/2005 - 12:43 | Informe spam
Sustituye CDialogApp por la clase de tu aplicación que derive de CWinApp.


Un saludo
Rodrigo Corral González [MVP]

FAQ de microsoft.public.es.vc++
http://rcorral.mvps.org
Respuesta Responder a este mensaje
#5 Mateu Perelló
10/04/2005 - 20:15 | Informe spam
el error esta en que creaba el DC antes de inicializar el DEVMODE
pues la solucion es esta, inicializar el DOCINFO y el DEVMODE antes de
hDC.CreateDC(..
y pasarle como quinto parametro el DEVMODE

espero que sirva de ayuda a alguien mas

Un Saludo a todos.
A10

> Hola grupo tengo el siguiente problema
> defino el siguiente codigo para imprimir un listado apaisado pero no lo
> llego a conseguir el DMORIENT_LANDSCAPE parece que no lo he definido


bien
> ,podriais ayudarme?
> Muchas grácias de antemano!!!!
>
> CDC hDC;
> DOCINFO di;
> DEVMODE dm;
> int x0,y;
> int nNumLinees=0;
> int nNumPagina=1;
> CString szTmp=_T("");
> hDC.CreateDC("WINSPOOL",theApp.m_szImpresoraAlb,NULL,NULL);
> memset(&dm,0,sizeof(dm));
> dm.dmSpecVersion=DM_SPECVERSION;
> dm.dmSize=sizeof(DEVMODE);
> dm.dmFields=DM_ORIENTATION;
> //dm.dmOrientation=DMORIENT_PORTRAIT;
> dm.dmOrientation=DMORIENT_LANDSCAPE;
> memset(&di,0,sizeof(DOCINFO));
> di.cbSize=sizeof(DOCINFO);
> szTmp.Format("listado");
> di.lpszDocName=szTmp;
> //hDC.m_bPrinting=true;
> hDC.SaveDC();
> if(hDC.StartDoc(&di)!=SP_ERROR)
> {
> int ModoMapaAnt=SetMapMode(hDC,MM_HIENGLISH);
> hDC.StartPage();
> hDC.ResetDC(&dm);
> hDC.SelectObject(&pnPincell);
>
> . y aqui empiezo a imprimir
>
>

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida