我在通过 CreateWindowEx 创建一个简单的 Group-Box-Control 时遇到问题。其标题的字体大小/样式看起来不正确。
我使用 Visual Studio - 资源管理器创建了一个简单的 Windows 对话框(包含组框、按钮……)。当我使用 DialogBox(...) 加载该对话框时,一切看起来都很正常,但是当我通过 CreateWindowEx(...) 在同一个对话框上创建另一个组框控件时,新控件的标题具有不同的字体大小/样式。
使用 Microsoft Spy++,我能够看到其他 groub-boxes 的 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]
关于乔纳森波特和超人,正如你所建议的,我将新组框的字体句柄设置为与其他控件相同。
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 复制正确的字体。
祝大家周末愉快。