Pregunta

Tengo una clase que deriva de CVIEW que llama a OnFilePrint (), pero parece que solo una copia se imprime, independientemente de cuántos ingrese en el cuadro de diálogo Imprimir. ¿Es este un error conocido, o estoy haciendo algo mal?

Potencialmente podría crear mi propio CPRIntdialog, pero no estoy muy seguro de cómo hacer que realmente haga la "impresión" por así decirlo. ¿Algo similar a lo siguiente?

CString PrinterName;
CString SelectedPrinter;
CPrintDialog dlg(FALSE);

int nCopies = 1;
if( IDOK != dlg.DoModal())
    return;
nCopies = dlg.GetCopies();

for(int i=0;i<nCopies;i++)
    //do something??

¿Qué me estoy perdiendo? Además, si el usuario selecciona una impresora PDF, ¿cómo evitaría que el código solicite al usuario para el archivo Guardar la ubicación "nCopies" Times?

¡Gracias por la ayuda!

¿Fue útil?

Solución

Hubiera esperado que cualquier versión moderna de Windows maneje las copias en el procesador de impresión y alivie el programa de la carga (tal como lo hace con las impresoras de bandas). Pero su pregunta sugiere lo contrario.

Mi memoria está oxidada, pero, según recuerdo, algunas impresoras (o sus conductores) harán copias, pero otras requieren que el programa lo haga. El diálogo captura la intención del usuario configurando el campo DMCopies en el DevMode.

El programa debe consultar con el controlador para ver si admite varias copias. Si es así, simplemente pase en el DevMode. Si no es así, entonces necesita un bucle como el que ha mostrado (y restablece el campo DevMode DMCopies a 1).

Olvidé cómo preguntarle al conductor si admite copias. Tal vez tenga que ver con la verificación si el bit dm_copies se establece en los dmfields del DevMode predeterminado. Recuerdo que en los malos días viejos de 16 bits, muchos conductores afirmaron apoyar copias pero en realidad no lo hicieron. La aplicación en la que trabajé en ese momento tenía una lista de conductores que decían que podían hacer copias pero que no podían.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top