>My understanding is that is what the first call to DocumentProperties provides -- size of the DEVMODE structure. The second call gets the current settings. The call to DeviceCapabilities provides the capabilities.
>
But DocumentProperties and DeviceCapabilities aren't giving you the same information.
First, you don't need DEVMODE at all to use DeviceCapabilities if all you want are the default capabilities of the printer. DeviceCapabilities tells you the specific settings available for any given property.
DocumentProperties relies on DEVMODE heavily. DEVMODE has a public section that never changes, and a private section that varies from printer to printer. DEVMODE has a dmFields field that has flags for each of the properties that indicate if that PROPERTY is available for the current printer. NOTE: This is not the same thing as the setting for that property!
I'm having no problem checking and manipulating the DEVMODE structure for setting a property. What I need to do first is verify that the setting is available for that property on that printer. For that you need DeviceCapabilities, but you don't need DEVMODE at all.