本主题描述显示“字体”对话框的示例代码,以便用户可以选择字体的属性。示例代码首先初始化CHOOSEFONT结构,然后调用ChooseFont函数显示对话框。
此示例设置CF_SCREENFONTS标志以指定对话框应仅显示屏幕字体。它设置CF_EFFECTS标志以显示允许用户选择删除,下划线和颜色选项的控件。
如果ChooseFont返回TRUE,表示用户单击确定按钮,lpLogFont结构lpLogFont成员指向的LOGFONT结构包含用于描述用户选择的字体和字体属性的信息。rgbColors成员包含所选文字颜色。示例代码使用此信息来设置与所有者窗口相关联的设备上下文的字体和文本颜色。
HWND hwnd; //所有者窗口
HDC hdc; //显示所有者窗口的设备上下文
CHOOSEFONT cf; //常见的对话框结构
static LOGFONT lf; //逻辑字体结构
static DWORD rgbCurrent; //当前文字颜色
HFONT hfont, hfontPrev;
DWORD rgbPrev;
//初始化CHOOSEFONT
ZeroMemory(&cf, sizeof(CHOOSEFONT));
cf.lStructSize = sizeof (CHOOSEFONT);
cf.hwndOwner = hwnd;
cf.lpLogFont = &lf;
cf.rgbColors = rgbCurrent;
cf.Flags = CF_SCREENFONTS | CF_EFFECTS;
if (ChooseFont(&cf)==TRUE) {
hfont = CreateFontIndirect(cf.lpLogFont);
hfontPrev = SelectObject(hdc, hfont);
rgbCurrent= cf.rgbColors;
rgbPrev = SetTextColor(hdc, rgbCurrent);
.
.
.
}