Windows Programmierung: Drucken |
PRINTDLG pd; memset(&pd, 0, sizeof(PRINTDLG)); pd.lStructSize = sizeof(PRINTDLG); pd.hwndOwner = hWnd; pd.Flags = PD_RETURNDC; if (PrintDlg(&pd)) { |
Wie bereits in [1] aufgezeigt, hat StartPage die hinterlistige Eigenart, Einstellungen des Kontextes zurückzusetzen. Dies gilt auch für Aufrufe des SelectFont, so daß man diesen günstigerweise hinter StartPage positioniert.
DOCINFO di; memset(&di, 0, sizeof(DOCINFO)); di.cbSize = sizeof(DOCINFO); di.lpszDocName = "drucktest"; // drucken StartDoc(pd.hDC, &di); StartPage(pd.hDC); // Inhalt ausgeben SelectObject(pd.hDC, MyFont); TextOut(pd.hDC, 70, 70, String, strlen(String)); TextOut(pd.hDC, 10, 17, String, strlen(String)); EndPage(pd.hDC); EndDoc(pd.hDC); // Dokument wird geschlossen |
Mit etwas Geschick ist es nicht schwer, die Paint-Routine des Bildschirms so zu stricken, daß man sie für die Ausgabe auf dem Drucker mitverwenden kann. Einen Offset braucht man für die Rollbalken des Fensters meist sowieso, so daß nur noch der Rand rechts und unten rechtzeitig gekappt werden muß. Für die Ermittlung der Seitengröße wird wiederum GetDeviceCaps herangezogen.
DeleteDC(pd.hDC); } if (pd.hDevMode != NULL) GlobalFree(pd.hDevMode); if (pd.hDevNames != NULL) GlobalFree(pd.hDevNames); |
Homepage - Windows-API-Programmierung | (C) Copyright 1999 Arnold Willemer |