This article describes the implementation of a font chooser dialog for the Pocket PC, with the following features:
- Font rendering preview
- ClearType support
- Property page implementation
The dialog layout was based on Pocket Excel's, and allows you to use the dialog with the SIP up.
The dialog was implemented as a property page so you can use it in your own property sheets without change. The demo project uses my own CCePropertySheet class to encapsulate it.
The class uses two public members for interfacing with the user:
LOGFONT variable that receives and returns the font definition. You can use it immediately in
CString variable that receives the text you want to render on the preview. By default it is "AaBbCcXxYyZz".
Font families are enumerated through a call to
EnumFontFamilies. This function receives a callback function pointer that will fill up the font combo box. When the dialog is initialized, it tries to match the font specified in
m_logFont with the contents of the combo boxes. If it cannot match the font name and size, the dialog will set both name and size in the proper combo boxes. The dialog is not prepared to receive a clean
m_logFont, you must fill it in before using the dialog.
ClearType support depends on your system supporting it. Please check with your vendor if your device supports ClearType.
Creating a font with the ClearType property is as simple as specifying 5 as the
lfQuality member of the
Using the dialog
Using the dialog is very straightforward:
CCePropertySheet sheet(_T("Choose Font"));
// Create the default font
page.m_logFont.lfHeight = -11;
page.m_logFont.lfWidth = 0;
page.m_logFont.lfEscapement = 0;
page.m_logFont.lfOrientation = 0;
page.m_logFont.lfWeight = FW_NORMAL;
page.m_logFont.lfItalic = FALSE;
page.m_logFont.lfUnderline = FALSE;
page.m_logFont.lfStrikeOut = 0;
page.m_logFont.lfCharSet = ANSI_CHARSET;
page.m_logFont.lfOutPrecision = OUT_DEFAULT_PRECIS;
page.m_logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
page.m_logFont.lfQuality = DEFAULT_QUALITY;
page.m_logFont.lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS;
On exit, the
m_logFont variable will have the new font definition, ready to be used.
Adding new fonts
Adding new fonts to your device is simple: just copy the desktop TrueType font files you wish to the device's \Windows\Fonts folder. They will be readily available.