首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows上的“正确”对话框/ UI字体

问Windows上的“正确”对话框/ UI字体
EN

Stack Overflow用户
提问于 2010-05-31 18:14:01
回答 1查看 2.1K关注 0票数 8

当使用CreateWindow动态创建控件(例如编辑控件)时,它通常以丑陋(粗体无衬线)字体开始。

通常我通过抓取父对话框的字体并将其设置为控件来解决这个问题--我甚至不知道这是不是一个好主意。

我如何“合法”获取正确的字体?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-31 18:23:02

获取消息框等对话框中使用的字体的“正确”方法是通过SystemParametersInfo()函数:

代码语言:javascript
复制
// C++ example
NONCLIENTMETRICS metrics;
metrics.cbSize = sizeof(NONCLIENTMETRICS);
::SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS),
    &metrics, 0);
HFONT font = ::CreateFontIndirect(&metrics.lfMessageFont);
::SendMessage(ctrlHWND, WM_SETFONT, (WPARAM)font, MAKELPARAM(TRUE, 0));

当控件被销毁时,不要忘记销毁字体:

代码语言:javascript
复制
::DeleteObject(font);

您可以查阅NONCLIENTMETRICS和SystemParametersInfo()的MSDN文档,了解可以检索到的其他系统范围的参数。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2942828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档