CreateWindowEx を使用して単純な Group-Box-Control を作成する際に問題があります。キャプションのフォントサイズ/スタイルが正しくありません。
Visual Studio - Resource Manager を使用して、単純な Windows ダイアログ (グループ ボックス、ボタンなどを含む) を作成しました。そのダイアログを DialogBox(…) で読み込むと、すべて正常に見えますが、CreateWindowEx(…) を介して同じダイアログに別のグループ ボックス コントロールを作成すると、新しいコントロールのキャプションのフォント サイズ/スタイルが異なります。
Microsoft Spy++ では、他のグループ ボックスの 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);
このコードの最後で、すべてのコントロールとダイアログ ウィンドウのフォント ハンドルが同じであることがわかりますが、Resource Manager で作成されたコントロールのみが正しいフォント (システム フォント) を持っています。
他に何かできることはありますか???
[編集-2]
信じられない…今は動く!お世話になりました皆様、誠にありがとうございました!
CreateWindowEx(…) の hWndParent 値をダイアログ ハンドルに設定し、WM_GETFONT と WM_SETFONT を使用して適切なフォントをコピーするだけで済みました。
良い週末をお過ごしください。