#include <windows.h>
#include <stdio.h>
void PrintBitmap(HDC hdcPrinter, const char* filename) {
// Cargar el bitmap
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, filename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
if (hBitmap == NULL) {
printf("Error al cargar el bitmap.\n");
return;
}
// Obtener información del bitmap
BITMAP bitmap;
GetObject(hBitmap, sizeof(BITMAP), &bitmap);
// Dibujar el bitmap en el contexto de impresión
HDC hdcMem = CreateCompatibleDC(hdcPrinter);
SelectObject(hdcMem, hBitmap);
// Dibujar el bitmap en el contexto de impresión
BitBlt(hdcPrinter, 0, 0, bitmap.bmWidth, bitmap.bmHeight, hdcMem, 0, 0, SRCCOPY);
// Limpiar
DeleteDC(hdcMem);
DeleteObject(hBitmap);
}
int main() {
// Configuración del documento de impresión
PRINTDLG printDlg;
ZeroMemory(&printDlg, sizeof(printDlg));
printDlg.lStructSize = sizeof(printDlg);
printDlg.Flags = PD_RETURNDC;
if (PrintDlg(&printDlg)) {
HDC hdcPrinter = printDlg.hDC;
// Iniciar el documento
DOCINFO docInfo;
ZeroMemory(&docInfo, sizeof(docInfo));
docInfo.cbSize = sizeof(DOCINFO);
docInfo.lpszDocName = "Mi documento";
StartDoc(hdcPrinter, &docInfo);
StartPage(hdcPrinter);
// Cargar y dibujar el bitmap
PrintBitmap(hdcPrinter, "ruta/a/tu/imagen.bmp");
// Finalizar la página y el documento
EndPage(hdcPrinter);
EndDoc(hdcPrinter);
// Liberar el contexto de impresión
DeleteDC(hdcPrinter);
} else {
printf("Error al abrir el diálogo de impresión.\n");
}
return 0;
}