Last updated: 11. 1.1998, 17:12
<*/NOWARN:F*> MODULE FormFeed; (*--------------------------------------------- FORMFEED.C --- Advances printer to next page (c) Charles Petzold, 1996 FormFeed.mod --- Translation to Stony Brook Modula-2 (c) Peter Stadler, 1997 ---------------------------------------------*) IMPORT WIN32; IMPORT WINGDI; IMPORT SYSTEM; IMPORT WINSPOOL; IMPORT WINX; VAR hdcPrint : WIN32.HDC; di : WINGDI.DOCINFO; (*++++*****************************************************************) PROCEDURE GetPrinterDC ():WIN32.HDC; (**********************************************************************) VAR pinfo5 : ARRAY[0..2] OF WINSPOOL.PRINTER_INFO_5; dwNeeded : WIN32.DWORD; dwReturned : WIN32.DWORD; BEGIN IF (WINSPOOL.EnumPrinters (WINSPOOL.PRINTER_ENUM_DEFAULT, WINX.NIL_ASTR, 5, SYSTEM.CAST(WIN32.LPBYTE,SYSTEM.ADR(pinfo5)), SIZE (pinfo5), dwNeeded, dwReturned)) THEN RETURN WINGDI.CreateDC (WINX.NIL_ASTR, pinfo5[0].pPrinterName^, WINX.NIL_ASTR, WINX.NIL_DEVMODEA); END; RETURN NIL; (* EnumPrinters failed, so RETURN null hdc *) END GetPrinterDC; (*++++*****************************************************************) BEGIN di := WINGDI.DOCINFO{ SIZE(WINGDI.DOCINFO), SYSTEM.ADR("FormFeed"), NIL } ; hdcPrint := GetPrinterDC () ; IF (hdcPrint # NIL) THEN IF (WINGDI.StartDoc (hdcPrint, di) > 0) THEN IF (WINGDI.StartPage (hdcPrint) > 0) AND (WINGDI.EndPage (hdcPrint) > 0) THEN WINGDI.EndDoc (hdcPrint); END; END; WINGDI.DeleteDC (hdcPrint); END; END FormFeed.