Cómo se realiza la impresión predeterminada
En este artículo se explica el proceso de impresión predeterminado en Windows en términos del marco de MFC.
En las aplicaciones MFC, la clase de vista tiene una función miembro denominada OnDraw
que contiene todo el código de dibujo. OnDraw
toma un puntero a un objeto CDC como parámetro. Ese objeto CDC
representa el contexto del dispositivo para recibir la imagen generada por OnDraw
. Cuando la ventana en la que se muestra el documento recibe un mensaje WM_PAINT, el marco llama a OnDraw
y lo pasa un contexto de dispositivo para la pantalla (un objeto CPaintDC, específicamente). En consecuencia, la salida de OnDraw
va a la pantalla.
En la programación para Windows, el envío de salida a la impresora es muy similar al envío de salida a la pantalla. Se debe a que la Interfaz de dispositivo gráfico (GDI) de Windows es independiente del hardware. Puede usar las mismas funciones GDI para la visualización en pantalla que para la impresión, simplemente usando el contexto de dispositivo adecuado. Si el objeto CDC
que OnDraw
recibe representa la impresora, la salida de OnDraw
va a la impresora.
Esto explica cómo las aplicaciones MFC pueden realizar una impresión sencilla sin necesidad de trabajo adicional por su parte. El marco se encarga de mostrar el cuadro de diálogo Imprimir y de crear un contexto de dispositivo para la impresora. Cuando el usuario selecciona el comando Imprimir en el menú Archivo, la vista pasa este contexto de dispositivo a OnDraw
, que dibuja el documento en la impresora.
Sin embargo, hay algunas diferencias significativas entre la impresión y la visualización en pantalla. Al imprimir, tiene que dividir el documento en distintas páginas y mostrarlas de una en una, en lugar de mostrar la parte visible en una ventana. Como corolario, debe tener en cuenta el tamaño del papel (ya sea el tamaño carta, oficio o sobre). Es posible que quiera imprimir en diferentes orientaciones, como el modo horizontal o vertical. La biblioteca MFC (Microsoft Foundation Class) no puede predecir cómo controlará estos problemas la aplicación, por lo que proporciona un protocolo para agregar estas funcionalidades.
Ese protocolo se describe en el artículo Documentos de varias páginas.