如何让 Win32 使用 Windows XP 样式字体
我正在使用纯 C 和 WinAPI 编写 Win32 应用程序。不允许使用 MFC 或 C++。为了让控件使用适当的样式进行绘制,我使用了清单,如相应的 MSDN 文章中所述。一切都很好,当我更改系统样式时,我的应用程序也会更改样式。但使用的字体实在是太丑了。如何强制应用程序使用标准系统字体?
I'm writing a Win32 application using plain C and WinAPI. No MFC or C++ is allowed. To get the controls to draw using the appropriate style, I use a manifest, as described in the corresponding MSDN article. Everything is fine, and when I change the system style, my application changes style as well. But the font used is just ugly. How do I force the application to use the standard system font?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以将
SystemParametersInfo
与SPI_GETNONCLIENTMETRICS
参数结合使用来检索当前字体。 SystemParametersInfo 将考虑当前主题并提供标题、菜单和消息对话框的字体信息。 (请参阅GetStockObject
http 的备注://msdn.microsoft.com/en-us/library/dd144925(VS.85).aspx)。该函数将检索NONCLIENTMETRICS
结构(请参阅 http://msdn.microsoft.com/en-us/library/ff729175(v=VS.85).aspx) 其中包含您需要的所有信息:如何创建和设置的示例如果您知道
LOGFONT
参数,请参阅窗口/控件中的字体 更改 win32 windows 项目中的默认窗口字体,但使用 doLOGFONT
而不是来自GetStockObject (DEFAULT_GUI_FONT)
,但由SystemParametersInfo
使用SPI_GETNONCLIENTMETRICS
参数返回。You can use
SystemParametersInfo
withSPI_GETNONCLIENTMETRICS
parameter to retrieve the current font. SystemParametersInfo will take into account the current theme and provides font information for captions, menus, and message dialogs. (See remark toGetStockObject
http://msdn.microsoft.com/en-us/library/dd144925(VS.85).aspx). The function will retrieveNONCLIENTMETRICS
structure (see http://msdn.microsoft.com/en-us/library/ff729175(v=VS.85).aspx) which contains all information you needs:An example how to create and a set font in a window/control if you knows
LOGFONT
parameter see at the end of the example from change the default window font in a win32 windows project, but use doLOGFONT
not fromGetStockObject(DEFAULT_GUI_FONT)
, but returned bySystemParametersInfo
withSPI_GETNONCLIENTMETRICS
parameter instead.