Papiergröße vom Standarddrucker auf A5 ändern
-
Hallo, habe folgenden Delphi Quellcode zum ändern der Papiergröße gefunden.
Procedure SetPrinterSettings; Var Device, Driver, Port: Array [0..255] Of Char; hDevMode: THandle; pDevMode: PDeviceMode; Begin Printer.GetPrinter(Device, Driver, Port, hDevmode); Printer.SetPrinter(Device, Driver, Port, 0); Printer.GetPrinter(Device, Driver, Port, hDevmode); If hDevmode <> 0 Then Begin pDevmode := GlobalLock(hDevmode); If pDevmode <> NIL Then Try // Ändern der Auflösung (hier 300 dpi): pDevMode^.dmPrintQuality := LoWord(300); pDevmode^.dmYResolution := HiWord(300); pDevmode^.dmFields := pDevmode^.dmFields Or DM_PRINTQUALITY Or DM_YRESOLUTION; // Ändern der Papiergröße (hier A5): pDevMode^.dmPaperSize := DMPAPER_A5; pDevmode^.dmFields := pDevmode^.dmFields Or DM_PAPERSIZE; Finally GlobalUnlock(hDevmode); End; End; End;
Habe das soweit umgesetzt.
TPrinter *printer = new TPrinter(); Char Device[255], Driver[255], Port[255]; THandle hDevMode; PDeviceMode pDevMode; printer->GetPrinter(Device, Driver, Port, hDevMode); printer->SetPrinter(Device, Driver, Port, 0); printer->GetPrinter(Device, Driver, Port, hDevMode); if (hDevMode != NULL) { pDevMode = GlobalLock(hDevMode); ... } delete printer;
Da bekomme ich folgendes:
[BCC32 Fehler] Unit1.cpp(58): E2034 Konvertierung von 'unsigned int' nach 'void *' nicht möglich
[BCC32 Fehler] Unit1.cpp(58): E2342 Keine Übereinstimmung des Typs beim Parameter 'hMem' ('void *' erwartet, 'unsigned int' erhalten)Kann mir jemand erklären wodran das liegt ?
Danke.
-
Hallo
auf dem BCB2009 müsste Zeile 10 im unteren Listing heissen:
pDevMode = (DEVMODEW*)GlobalLock((HGLOBAL)hDevMode);
mfg
kpeter