Last updated: 26. 1.1998, 20:40
<* +M2EXTENSIONS *> MODULE FormFeed; (*--------------------------------------------- FORMFEED.C --- Advances printer to next page (c) Charles Petzold, 1996 FormFeed.mod --- Translation to XDS Modula-2 (c) Peter Stadler, 1997 ---------------------------------------------*) IMPORT Windows; IMPORT SYSTEM; VAR hdcPrint : Windows.HDC; di : Windows.DOCINFO; (*++++*****************************************************************) PROCEDURE GetPrinterDC ():Windows.HDC; (**********************************************************************) VAR pinfo5 : ARRAY[0..2] OF Windows.PRINTER_INFO_5; dwNeeded : Windows.DWORD; dwReturned : Windows.DWORD; BEGIN IF (Windows.EnumPrinters (Windows.PRINTER_ENUM_DEFAULT, NIL, 5, SYSTEM.CAST(Windows.PBYTE,SYSTEM.ADR(pinfo5)), SIZE (pinfo5), dwNeeded, dwReturned)) THEN RETURN Windows.CreateDC (NIL, pinfo5[0].pPrinterName, NIL, NIL); END; RETURN NIL; (* EnumPrinters failed, so RETURN null hdc *) END GetPrinterDC; (*++++*****************************************************************) CONST form = 'FormFeed'; BEGIN di := Windows.DOCINFO{ SIZE(Windows.DOCINFO), SYSTEM.ADR(form), NIL,NIL,0 } ; hdcPrint := GetPrinterDC () ; IF (hdcPrint # NIL) THEN IF (Windows.StartDoc (hdcPrint, di) > 0) THEN IF (Windows.StartPage (hdcPrint) > 0) AND (Windows.EndPage (hdcPrint) > 0) THEN Windows.EndDoc (hdcPrint); END; END; Windows.DeleteDC (hdcPrint); END; END FormFeed.