🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: borland.public.cppbuilder.nativeapi
Article #12452

Re: Windows Printers

#12452
From: John Scott
Date: Thu, 04 Dec 2003 15:26
66 lines
3997 bytes
I guess I was confused. The help for the TPrinter object shows the
GetPrinter() method as using a pointer to a DEVMODE as the last parameter.
Retrieves information about the current printer.

void __fastcall GetPrinter(char * ADevice, char * ADriver, char * APort, int
&ADeviceMode);

Description

Call GetPrinter to obtain information about the current printer.

ADevice is a buffer that receives the device name of the current printer.
This is the name that appears in the Print Manager (for example, "Epson
FX-80"). It is not the printer model name.

ADriver is a buffer that receives the driver name for the current printer.
Some versions of Windows do not use printer driver names, in which case this
buffer is unused. On versions of Windows that support printer driver names,
this is the name of a printer driver (usually '
WINSPOOL').

APort is a buffer that receives the port used by the current printer. It is
not used on 32-bit versions of Windows, but is included for backward
compatibility.

DeviceMode returns the handle to a memory buffer containing a DEVMODE
structure, which contains device-specific initialization data for the device
driver. Use the GlobalLock function to convert this handle into a pointer to
the structure.

I Guess I need to explore that GlobalLock function. I want to stick with the
VCL as much as possible since the existing code is VCL.
>
> I have no idea what GetPrinter() does (I don't do VCL), but it is
> obvious that ADeviceMode is a THandle, not a DEVMODE.
>
> AS I posted before, you need to use DocumentProperties() or the VCL
> equiv. to get/set the devmode.
>
> num_bytes = DocumentProperties(NULL, printerHandle, &printerfile_port,
> NULL, NULL, 0);
> DevMode = (DEVMODE*)GlobalAlloc( GMEM_FIXED |GMEM_ZEROINIT,num_bytes);
> DocumentProperties(NULL, printerHandle, &printerfile_port, DevMode,
> NULL, DM_OUT_BUFFER);
> // modify the appropriate fields
> DevMode->dmFields = DM_ORIENTATION | DM_PRINTQUALITY ;
> DevMode->dmOrientation = printer_direction=='L'? DMORIENT_LANDSCAPE:
> DMORIENT_PORTRAIT;
> DevMode->dmPrintQuality = DMRES_HIGH;
> // call DocumentProperties() yet again, this time to get the
> final DEVMODE to pass into the CreateDC() function
> DocumentProperties(NULL, printerHandle, &printerfile_port, DevMode,
> DevMode, DM_OUT_BUFFER | DM_IN_BUFFER);
> // create a printer device context
> printerDC = CreateDC( NULL/*Driver.c_str()*/, &printerfile_port, NULL,
> DevMode);
> GlobalFree(DevMode);
>
>
> >One final thing how does Printer()->NewPage; differ from the StartPage()
and
> >EndPage()?
>
> Don't know, but it probably calls them.
>
>
Technical Details
Message-ID: <3fcf5268$1@newsgroups.borland.com>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!news2.google.com!fu-berlin.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail
References: <3fbcf9c2@newsgroups.borland.com> <3fbd8132$1@newsgroups.borland.com> <3fc77301@newsgroups.borland.com> <3fc7e524$1@newsgroups.borland.com> <3fca2474@newsgroups.borland.com> <3fcb2567$1@newsgroups.borland.com> <3fcb6984@newsgroups.borland.com> <goumsvolftvangoh1n8i7ktptavi57ut2d@4ax.com> <dsvmsvo53afn3qqk6p2ir6ld5lldimucju@4ax.com> <3fcb93d8@newsgroups.borland.com> <eipnsvs99q92prau97tl685lua6crv6e92@4ax.com> <3fce1fed@newsgroups.borland.com> <eudssvci6j3q0l82ivvfs5oj3i2rn1c5ct@4ax.com>

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: 10cc67,7b2449597708bec
X-Google-Attributes: gid10cc67,public
X-Google-ArrivalTime: 2003-12-04 07:39:44 PST
From: "John Scott" <jscott@kw.igs.net>
Newsgroups: borland.public.cppbuilder.nativeapi
References: <3fbcf9c2@newsgroups.borland.com> <3fbd8132$1@newsgroups.borland.com> <3fc77301@newsgroups.borland.com> <3fc7e524$1@newsgroups.borland.com> <3fca2474@newsgroups.borland.com> <3fcb2567$1@newsgroups.borland.com> <3fcb6984@newsgroups.borland.com> <goumsvolftvangoh1n8i7ktptavi57ut2d@4ax.com> <dsvmsvo53afn3qqk6p2ir6ld5lldimucju@4ax.com> <3fcb93d8@newsgroups.borland.com> <eipnsvs99q92prau97tl685lua6crv6e92@4ax.com> <3fce1fed@newsgroups.borland.com> <eudssvci6j3q0l82ivvfs5oj3i2rn1c5ct@4ax.com>
Subject: Re: Windows Printers
Date: Thu, 4 Dec 2003 10:26:32 -0500
Lines: 68
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1106
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
NNTP-Posting-Host: 216.16.227.124
Message-ID: <3fcf5268$1@newsgroups.borland.com>
X-Trace: newsgroups.borland.com 1070551656 216.16.227.124 (4 Dec 2003 07:27:36 -0700)
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!news2.google.com!fu-berlin.de!newsfeed01.sul.t-online.de!t-online.de!newsgroups.borland.com!not-for-mail