gpt4 book ai didi

winapi - 如何让 Win32 使用 Windows XP 样式字体

转载 作者:行者123 更新时间:2023-12-03 04:59:14 31 4
gpt4 key购买 nike

我正在使用纯 C 和 WinAPI 编写 Win32 应用程序。不允许使用 MFC 或 C++。为了让控件使用适当的样式进行绘制,我使用了 list ,如相应的 MSDN 文章中所述。一切都很好,当我更改系统样式时,我的应用程序也会更改样式。但使用的字体实在是太丑了。如何强制应用程序使用标准系统字体?

最佳答案

您可以将SystemParametersInfoSPI_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 ),其中包含您需要的所有信息:

typedef struct tagNONCLIENTMETRICS {
UINT cbSize;
int iBorderWidth;
int iScrollWidth;
int iScrollHeight;
int iCaptionWidth;
int iCaptionHeight;
LOGFONT lfCaptionFont;
int iSmCaptionWidth;
int iSmCaptionHeight;
LOGFONT lfSmCaptionFont;
int iMenuWidth;
int iMenuHeight;
LOGFONT lfMenuFont;
LOGFONT lfStatusFont;
LOGFONT lfMessageFont;
#if (WINVER >= 0x0600)
int iPaddedBorderWidth;
#endif
} NONCLIENTMETRICS, *PNONCLIENTMETRICS, *LPNONCLIENTMETRICS;

如果您知道 LOGFONT 参数,请参阅示例末尾的 change the default window font in a win32 windows project 如何在窗口/控件中创建和设置字体的示例,但使用 do LOGFONT 不是来自 GetStockObject(DEFAULT_GUI_FONT),而是由 SystemParametersInfo 使用 SPI_GETNONCLIENTMETRICS 参数返回。

关于winapi - 如何让 Win32 使用 Windows XP 样式字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029573/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com