我使用的是Win32 API和C / C ++。我有一个HFONT,想用它来创建一个新的HFONT。新字体应使用完全相同的字体指标,但它应该是粗体。类似的东西:
HFONT CreateBoldFont(HFONT hFont) {
LOGFONT lf;
GetLogicalFont(hFont, &lf);
lf.lfWeight = FW_BOLD;
return CreateFontIndirect(&lf);
}
“GetLogicalFont”是缺失的API(据我所知,无论如何)。还有其他方法吗?最好是适用于Windows Mobile 5 +的东西。
答案 0 :(得分:26)
您想使用GetObject function。
GetObject ( hFont, sizeof(LOGFONT), &lf );
答案 1 :(得分:9)
这样的事情 - 请注意,错误检查留给读者练习。 : - )
static HFONT CreateBoldWindowFont(HWND window)
{
const HFONT font = (HFONT)::SendMessage(window, WM_GETFONT, 0, 0);
LOGFONT fontAttributes = { 0 };
::GetObject(font, sizeof(fontAttributes), &fontAttributes);
fontAttributes.lfWeight = FW_BOLD;
return ::CreateFontIndirect(&fontAttributes);
}
static void PlayWithBoldFont()
{
const HFONT boldFont = CreateBoldWindowFont(someWindow);
.
. // Play with it!
.
::DeleteObject(boldFont);
}