gpt4 book ai didi

c++ - WinAPI 的 Groupbox 字体问题

转载 作者:行者123 更新时间:2023-11-30 02:04:05 24 4
gpt4 key购买 nike

我在通过 CreateWindowEx 创建简单的 Group-Box-Control 时遇到问题。标题的字体大小/样式看起来不对。

我使用 Visual Studio - 资源管理器创建了一个简单的 Windows 对话框(包含组框、按钮……)。当我使用 DialogBox(...) 加载该对话框时,一切看起来都很正常,但是当我通过 CreateWindowEx(...) 在同一对话框上创建另一个组框控件时,新控件的标题具有不同的字体大小/样式。

使用 Microsoft Spy++,我能够看到其他 groub-box 的 dwExStyle 和 dwStyle 值,但即使我在 CreateWindowEx 中使用相同的值,我仍然会看到不同的外观。

这是我用来创建新组框的代码:

HWND hGroup1 = GetDlgItem(_hWnd, IDC_GROUPBOX1);
HWND hGroup2 = CreateWindowEx(
WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOPARENTNOTIFY,
L"Button",
L"Hallo",
WS_CHILDWINDOW | WS_VISIBLE | BS_GROUPBOX,
20, 20, 250, 250,
hGroup1,
nullptr,
_hInstance,
nullptr);

这是对话框的屏幕截图:

http://imageshack.us/photo/my-images/856/groupboxfontissue.png/

请让我知道我哪里出错了,我可以做些什么来解决它。

[编辑-1]

关于 Jonathan Potter 和 Superman,正如您所建议的,我将新组框的字体句柄设置为与其他控件相同。

HFONT hFont1 = (HFONT)SendMessage(hGroup1, WM_GETFONT, 0, 0); 
HFONT hFont2 = (HFONT)SendMessage(hGroup2, WM_GETFONT, 0, 0);
HFONT hFont3 = (HFONT)SendMessage(_hWnd, WM_GETFONT, 0, 0);
SendMessage(hGroup2, WM_SETFONT, (WPARAM)hFont1, TRUE);

hFont2 = (HFONT)SendMessage(hGroup2, WM_GETFONT, 0, 0);

在此代码的末尾,我可以看到所有控件和对话框窗口都具有相同的字体句柄,但只有使用资源管理器创建的控件具有正确的字体(即系统字体)。

还有什么我可以做的吗???

[编辑-2]

我简直不敢相信……它现在起作用了!非常感谢大家的帮助!

我只需将 CreateWindowEx(...) 中的 hWndParent 值设置为对话框句柄,然后使用 WM_GETFONT 和 WM_SETFONT 复制正确的字体。

祝大家周末愉快。

最佳答案

您手动(通过 CreateWindowEx)创建的控件不会自动设置字体,而是默认为“系统字体”(您在屏幕截图中看到的字体)。相反,您需要在创建控件后设置它的字体。例如,

SendMessage(hGroup2, WM_SETFONT, (WPARAM)SendMessage(hGroup1, WM_GETFONT, 0, 0), TRUE);

关于c++ - WinAPI 的 Groupbox 字体问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11061049/

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