2

リソース ファイルに IDD_DIALOG を作成しました。

次のコードを使用して、ダイアログを画面の中央に配置しています。

case WM_INITDIALOG:
    RECT Rect;
    ::GetWindowRect(hwndDlg, &Rect);
    ::SetWindowPos(hwndDlg, HWND_TOPMOST, (::GetSystemMetrics(SM_CXSCREEN)/2 - ((Rect.right - Rect.left)/2)), (::GetSystemMetrics(SM_CYSCREEN)/2 - ((Rect.bottom - Rect.top)/2)), (Rect.right - Rect.left), (Rect.bottom - Rect.top), SWP_SHOWWINDOW);
    return TRUE;

私の質問は、現在のコードと一緒にキャプション (ダイアログ タイトル) を中央に配置するにはどうすればよいですか?

ありがとう。

4

1 に答える 1

3

本当に必要でない限り、しないのが一番です。

Office などの一部のアプリでは、タイトル バーに追加のボタン ウィジェットを表示できるようにするために、カスタムの境界線/フレームを描画する必要があるでしょう。(Office もタイトルバーのテキストを中央に配置します...) これはかなり複雑で、さらに、XP より前のバージョンで実行しているか、DWM が有効になっている Vista で実行しているかによって、2 つの異なる手法があります。Vista/DWM のケースに関連する問題の一部をまとめた記事を見つけました。また、DWM が有効になっていない場合は、古い手法をサポートし、WM_NCPAINT を処理およびオーバーライドする必要がある場合があります。

タイトルバーを中央に配置するだけでも大変な作業です!

タイトルバーの位置合わせは時間の経過とともに変化したことがわかりました。Win3.1 では中央に配置されていました。その後、95 年代に左詰めになりました (または、右から左へ記述する言語では右詰めになりました)。事態は一巡し、デスクトップ モードでは、Windows 8 は再び中央に配置されるようになりました。

おそらく、「ダイアログのキャプションを中央に配置する方法は?」に対する最も簡単な答えです。です: Windows 8 にアップグレードします :-)

于 2013-01-29T01:38:26.683 に答える