INF: Controlling the Windows Printer Settings
ID Number:  Q10471

3.00
WINDOWS


Summary:
Some Windows version 3.0 printer drivers implement a convention for
controlling print settings on a job-by-job basis, without requiring
the printer to post the printer driver's setup dialog box. An
application can save properties, such as orientation and paper size,
as part of a document's page settings.

More Information:

Some version 3.0 printer drivers, such as HPPCL and PSCRIPT, implement
two new functions, ExtDeviceMode() and DeviceCapabilities(), and
support a device-independent format for their DEVMODE structures.

The DEVMODE structure is the format for the environment used by a
printer driver. Whenever a device context (DC) is created specifying a
printer driver, or the printer driver puts up its dialog box, that
driver associates a data structure, the DEVMODE, with the port. This
DEVMODE can be retrieved using GetEnvironment(). The DEVMODE structure
reflects the settings in the printer dialog box and in WIN.INI.

Commonly used fields in DEVMODE store the orientation, page size, bin,
and so on.

The fourth parameter of CreateDC() is a pointer to a DEVMODE
structure. Therefore, an application may save a DEVMODE structure and
pass it to CreateDC() later. When a DEVMODE structure is passed to
CreateDC(), it will override the default printer settings for the
device.

A DEVMODE structure can be directly obtained or manipulated using the
ExtDeviceMode() driver function. This function also allows an
application to put up the driver's dialog box with application
supplied settings.

DeviceCapabilities() provides information about what settings the
printer supports.

By using ExtDeviceMode(), an application can maintain its own print
settings, even on a document-by-document basis. Furthermore, because
part of DEVMODE is device independent, the application can directly
manipulate common settings such as orientation.

This topic is discussed in detail in Chapter 17 of the "Microsoft
Windows Software Development Kit Guide to Programming."
