Microsoft KB Archive/74737

{|
 * width="100%"|

HOWTO: Change the Font Used by Dialog Controls in Windows

 * }

Q74737

-

The information in this article applies to:


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

-

SUMMARY
In Windows 3.x, there are two ways to specify the font used by dialog controls:


 * The FONT statement can be used in the dialog template to specify the font used by ALL the controls in the dialog box.
 * The WM_SETFONT message can be sent to one or more dialog controls during the processing of the WM_INITDIALOG message.

If a font is specified in the dialog template, the controls will use a bold version of that font. The following code demonstrates how to change the font used by dialog box controls to a nonbold font using WM_SETFONT. The font should be deleted with DeleteObject when the dialog box is closed.

Sample Code
  HWND hDlg; HFONT hDlgFont; LOGFONT lFont;

case WM_INITDIALOG: /* Get dialog font and create non-bold version */ hDlgFont = NULL; if ((hDlgFont = (HFONT)SendMessage(hDlg, WM_GETFONT, 0, 0L))               != NULL) {         if (GetObject(hDlgFont, sizeof(LOGFONT), (LPSTR)&lFont)                    != NULL) {            lFont.lfWeight = FW_NORMAL; if ((hDlgFont = CreateFontIndirect(&lFont)) != NULL) {               SendDlgItemMessage(hDlg, CTR1, WM_SETFONT, hDlgFont, 0L); // Send WM_SETFONT message to desired controls }            }          }       else  // user did not specify a font in the dialog template { // must simulate system font lFont.lfHeight = 13; lFont.lfWidth = 0; lFont.lfEscapement = 0; lFont.lfOrientation = 0; lFont.lfWeight = 200; // non-bold font weight lFont.lfItalic = 0; lFont.lfUnderline = 0; lFont.lfStrikeOut = 0; lFont.lfCharSet = ANSI_CHARSET; lFont.lfOutPrecision = OUT_DEFAULT_PRECIS; lFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; lFont.lfQuality = DEFAULT_QUALITY; lFont.lfPitchAndFamily = VARIABLE_PITCH | FF_SWISS; lFont.lfFaceName[0] = NULL; hDlgFont = CreateFontIndirect(&lFont);

SendDlgItemMessage(hDlg, CTR1, WM_SETFONT, hDlgFont,            (DWORD)TRUE); // Send WM_SETFONT message to desired controls }

return TRUE; break; Additional query words:

Keywords : kbDlg kbOSWinNT kbOSWin2000 kbSDKWin32 kbGrpDSUser kbOSWin

Issue type : kbhowto

Technology : kbWin32SDKSearch kbAudDeveloper kbWin3xSearch kbSDKSearch kbWin32sSearch kbWinSDKSearch kbWinSDK310