[C con Clase] como imprimir

Salvador Pozo salvador en conclase.net
Jue Nov 23 20:56:33 CET 2006


El pasado 2006-11-22 08:32:14, Dario escribió:
 
D> Hola
D> en un proyecto MFC - SDI - con VC++ 6.0 en la funcion On Print hago lo siguiente - adjuno el codigo mas abajo -
D> como pueden ver el dato que corresponde al eje "y" es una variable para que al leer registro de un achivo los pueda imprimir sin que se superpopngan. El problema es como hacer para controlar el largo de la pagina , es decir cuantas lineas como maximo puedo imprimir y como hacer para indicar el salto de pagina  - para continuar imprimiendo en otra página -

Hola:

Existen funciones en el API, y supongo que estarán encapsuladas en las librerías de clases de VC++, para obtener información sobre las dimensiones de la página de una impresora conectada al sistema.

En el API, esas funciones son, DocumentProperties y AdvancedDocumentProperties, que dan información sobre muchas de las propiedades de la impresora que se indique, en una estructura DEVMODE. De este modo puedes saber la orientación del papel, el tamaño, resoluciones, colores, etc.

En Windows no se puede dar por sentado que una página de impresora puede imprimir un número determinado de líneas o columnas, siempre hay que obtener la infomación de la impresora y adaptar el programa a esa información.

Hasta pronto.
-- 
Salvador Pozo
mailto:salvador en conclase.net

D> Muchas gracias
D> Dario 
D>  
D> while(pos<archivo.GetLength())
D>  {
D>   archivo.Read(reg,sizeof(registroempresa));
D>   pDC->SetTextAlign(TA_RIGHT);
D>   fntDefault = pDC->SelectObject(&fntResult);
D>   numero.Format("%i",item);
D>   pDC->TextOut(100, -i, TEXT(numero));
D>   fntDefault = pDC->SelectObject(&fntLabel);
D>   fntDefault = pDC->SelectObject(&fntResult);
D>   
D>   //Nombre de la Pieza
D>   pDC->TextOut(580, -i, TEXT(reg->nombrepieza));
D>   //codiga de pieza
D>   pDC->TextOut(820, -i, TEXT(reg->codigopieza));
D>   //$ Unuitario
D>   numero.Format("%.3f", reg->preciohora/60);
D>   pDC->TextOut( 1350, -i, TEXT(numero));
D>   //Minuto de trabajo de la pìeza
D>   numero.Format("%.2f",reg->minutotrabajo);
D>   pDC->TextOut( 1650, -i, TEXT(numero));
D>   //cantidad
D>   numero.Format("%i",reg->cantidad);
D>   pDC->TextOut( 2150, -i, TEXT(numero));
D>    
D>   //totalparcial
D>   total=total+(reg->cantidad*reg->minutotrabajo*(reg->preciohora/60));
D>   numero.Format("%.3f", reg->cantidad*reg->minutotrabajo*(reg->preciohora/60));
D>   pDC->TextOut(2800, -i, TEXT(numero));
D>   
D>   i+=50;
D>   pos+=sizeof(registroempresa);
D>   archivo.Seek(pos,CFile::begin);
D>  }
D> _______________________________________________
D> Cconclase mailing list
D> Cconclase en listas.conclase.net
D> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net


Más información sobre la lista de distribución Cconclase