gpt4 book ai didi

c++ - win32 - 在按钮中使用默认按钮字体

转载 作者:行者123 更新时间:2023-11-28 00:06:30 26 4
gpt4 key购买 nike

我正在用 C++ 创建一个小型 WinAPI 应用程序。我正在尝试使用以下代码在我的表单上创建一个按钮:

HWND hwndButton = CreateWindow(
TEXT("BUTTON"),
TEXT("Click Here"),
WS_TABSTOP | WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON, // Styles
10,
10,
100,
30,
hwnd,
NULL,
(HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE),
NULL);

此代码基于 MSDN 示例。我的问题是它在按钮上使用了粗体字体,如下所示:

enter image description here

当我想像这样使用标准字体时:

enter image description here

我的文件顶部已经有预处理器指令来启用视觉样式。

#pragma comment(linker,"\"/manifestdependency:type='win32' \
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

我应该采取什么步骤来使用标准系统宽字体?

谢谢

最佳答案

GetStockObject不是检索 GUI 字体的推荐方法(它不考虑主题,可以为按钮、菜单等选择不同的字体)。相反,您应该使用 SystemParametersInfo (请参阅 GetStockObject备注部分)。

It is not recommended that you employ this method to obtain the current font used by dialogs and windows. Instead, use the SystemParametersInfo function with the SPI_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.

NONCLIENTMETRICS metrics = {};
metrics.cbSize = sizeof(metrics);
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, metrics.cbSize, &metrics, 0);

HFONT guiFont = CreateFontIndirect(&metrics.lfCaptionFont);

// When you're done with the font, don't forget to call
DeleteObject(guiFont);

关于c++ - win32 - 在按钮中使用默认按钮字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35415636/

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