Microsoft KB Archive/118622

{|
 * width="100%"|

INFO: Using the Document Properties Dialog Box

 * }

Q118622

-

The information in this article applies to:


 * Microsoft Win32 Application Programming Interface (API), used with:
 * Microsoft Windows NT Server versions 3.5, 3.51
 * Microsoft Windows NT Workstation versions 3.5, 3.51
 * Microsoft Windows 95
 * Microsoft Windows 2000 Advanced Server
 * Microsoft Windows 2000 Server
 * Microsoft Windows 2000 Professional

-

SUMMARY
A number of applications display a printer-configuration dialog box titled "Document Properties" when the user selects File from the Application menu, select Print, and then select Setup.

The DocumentProperties API is used to display this dialog box. You need to call DocumentProperties with the DM_IN_PROMPT bit set in the last parameter (fMode). You also need to call OpenPrinter before calling DocumentProperties.

MORE INFORMATION
The following code demonstrates how to call DocumentProperties:

Sample Code
  HDC         hPrnDC; LPDEVMODE  lpDevMode = NULL; LPDEVNAMES lpDevNames; LPSTR      lpszDriverName; LPSTR      lpszDeviceName; LPSTR      lpszPortName; PRINTDLG   pd; HANDLE     hPrinter; int        nDMSize; HANDLE     hDevMode; NPDEVMODE  npDevMode; DEVMODE    DevModeIn;

// Get the defaults without displaying any dialog boxes. pd.Flags = PD_RETURNDEFAULT; pd.hDevNames = NULL; pd.hDevMode = NULL; pd.lStructSize = sizeof(PRINTDLG); PrintDlg((LPPRINTDLG)&pd);

lpDevNames = (LPDEVNAMES)GlobalLock(pd.hDevNames); lpszDriverName = (LPSTR)lpDevNames + lpDevNames->wDriverOffset; lpszDeviceName = (LPSTR)lpDevNames + lpDevNames->wDeviceOffset; lpszPortName  = (LPSTR)lpDevNames + lpDevNames->wOutputOffset;

OpenPrinter(lpszDeviceName,&hPrinter,NULL);

// A zero for last param returns the size of buffer needed.

nDMSize = DocumentProperties(hWnd,hPrinter,lpszDeviceName,NULL,NULL,0); if ((nDMSize < 0) || !(hDevMode = LocalAlloc (LHND, nDMSize)))

return NULL;

npDevMode = (NPDEVMODE) LocalLock (hDevMode);

// Fill in the rest of the structure.

lstrcpy (DevModeIn.dmDeviceName, lpszDeviceName); DevModeIn.dmSpecVersion   = 0x300; DevModeIn.dmDriverVersion = 0; DevModeIn.dmSize          = sizeof (DevModeIn); DevModeIn.dmDriverExtra   = 0;

// Display the "Document Properties" dialog box. DocumentProperties(hWnd,hPrinter,lpszDeviceName,npDevMode,&DevModeIn,

DM_IN_PROMPT|DM_OUT_BUFFER);

// Get the printer DC.

hPrnDC = CreateDC

(lpszDriverName,lpszDeviceName,lpszPortName,(LPSTR)npDevMode);

LocalUnlock (hDevMode);

// Use the printer DC.

... Additional query words: 3.10 4.00

Keywords : kbOSWinNT350 kbOSWinNT351 kbOSWin2000 kbSDKWin32 kbOSWin95 kbDSupport

Issue type : kbinfo

Technology : kbAudDeveloper kbWin32sSearch kbWin32API