HOWTO: Change the Font Used by Dialog Controls in Windows
ID: Q74737
|
The information in this article applies to:
-
Microsoft Win32 Software Development Kit (SDK)
-
Microsoft Windows Software Development Kit (SDK) 3.1
-
Microsoft Windows 2000
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 kbNTOS kbWinOS2000 kbSDKWin32 kbGrpUser kbWinOS
Version : WINDOWS:3.1
Platform : WINDOWS
Issue type : kbhowto