Microsoft KB Archive/89544

{|
 * width="100%"|

PRB: Printer Font too Small with ChooseFont Common Dialog

 * }

Q89544

-

The information in this article applies to:


 * Microsoft Win32 Software Development Kit (SDK)
 * Microsoft Windows Software Development Kit (SDK) 3.1

-

SYMPTOMS
In an application for the Microsoft Windows graphical environment, the user selects a printer font through the ChooseFont common dialog box function. When the application calls the CreateFontIndirect to create the selected font, even though the style and face name are correct, the point size is much too small.

CAUSE
The LOGFONT structure returned to the application is based on screen metrics--even when the user selects a printer font. Because the resolution (dots per inch) on a printer is generally much greater than that of the screen, the resulting printer font is smaller than desired.

RESOLUTION
Modify the lfHeight member of the LOGFONT data structure according to the printer metrics.

MORE INFORMATION
The following code demonstrates how to modify the lfHeight member. The lpcf variable contains a pointer to the CHOOSEFONT data structure. The hDC member of the CHOOSEFONT data structure is a handle to the printer device context.

  if (ChooseFont(lpcf)) {     if (lpcf->nFontType & PRINTER_FONT) {        iLogPixelsy = GetDeviceCaps(lpcf->hDC, LOGPIXELSY); lpcf->lpLogFont->lfHeight = MulDiv(-iLogPixelsy, (lpcf->iPointSize / 10), 72); hPrinterFont = CreateFontIndirect((LPLOGFONT)(lpcf->lpLogFont)); }     else {        // Create screen font }  }   else {     // Process common dialog box error } Additional query words:

Keywords : kbGDI

Issue type : kbprb

Technology : kbWin32SDKSearch kbAudDeveloper kbWin3xSearch kbSDKSearch kbWin32sSearch kbWinSDKSearch kbWinSDK310