当前位置:  开发笔记 > 编程语言 > 正文

从HFONT创建修改过的HFONT

如何解决《从HFONT创建修改过的HFONT》经验,为你挑选了2个好方法。

我使用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+的东西.



1> arul..:

您想使用GetObject函数.

GetObject ( hFont, sizeof(LOGFONT), &lf );



2> Johann Gerel..:

这样的事情 - 请注意,错误检查留给读者练习.:-)

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);
}

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有