none
CreateDialogを用いてWS_EX_TOOLWINDOW指定しても小さいタイトルバーにならない? RRS feed

  • 質問

  • リソースを
    IDD_DIALOG DIALOG DISCARDABLE 0, 0, 210, 49
    EXSTYLE WS_EX_TOOLWINDOW | WS_EX_DLGMODALFRAME | WS_EX_NOPARENTNOTIFY
    STYLE WS_POPUP | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU | DS_SETFONT | DS_CENTER
    CAPTION ""
    FONT 6, "MS ゴシック"
    BEGIN
    CONTROL "", IDC_STATUS, "MSCTLS_STATUSBAR32", WS_CHILD | WS_VISIBLE | CCS_TOP | CCS_NOMOVEY, 0, 20, 210, 15
    CONTROL "ProgressBar", IDC_PROGBAR, "MSCTLS_PROGRESS32", WS_CHILD | WS_VISIBLE | WS_BORDER, 0, 0, 210, 31
    END
    としてC++(32bit)で
    CreateDialog(hInstance, MAKEINTRESOURCE(IDD_DIALOG), 0, (DLGPROC)WndProc)
    としたのですがタイトルバーが小さくならないのですが、理由がわかりましたら教えてください。
    (環境はWindows10Homeです)

    ちなみに、BorlandC++で同様に作成したexeはWindows10Homeにてタイトルバーは小さくなります。
    また、VC++で作成したexeをresource_hackerで調べてみるとWS_EX_TOOLWINDOWは設定されています。
    2020年12月22日 20:13

回答

すべての返信

  • 的外れかもしれませんが、Windows 7 以降の環境で、ダイアログボックスなど WS_THICKFRAME が指定されていないウィンドウについて、実行ファイルに設定されているサブシステムバージョンによってウィンドウの縁のサイズが異ってしまう現象があります。

    詳しくは下記の投稿と回答をご参照いただけますでしょうか。

    参考①:ウィンドウのフレーム
    参考②:WS_EX_TOOLWINDOW doesn't give look I want in Windows 8 (microsoft.com) (英語)



    2020年12月24日 18:24
  • 仕方がないのでWS_EX_TOOLWINDOWとCreateDialogだけの
    実行形式を作成し、逆アセンブラかデバッカーで解析かもと思って
    いたのですが、サブシステムの影響とは思いませんでした
    早速、サブシステムを書き換えてみました。タイトルバーが小さくなりました。
    ありがとうございました。
    2020年12月24日 19:30