Posts
ウィンドウスタイルの細かい話
Win32 API ベースでウィンドウを作っていると、コードが煩雑すぎてウィンドウスタイルの細かい指定まで気がまわらないが、プログラムを見直す度に気になっていたので、意味が不明確になっていたウィンドウスタイルについて調べてみた。
WS_OVERLAPPED
WS_OVERLAPPEDWINDOW は以下のスタイルをまとめたものになっている。
スタイル | 意味 |
---|---|
WS_OVERLAPPED | オーバーラップウィンドウを作成します。オーバーラップウィンドウにはキャプションと境界線があります。 |
WS_CAPTION | タイトルバーを持つウィンドウ (WS_BORDER を含む) を作成します。 |
WS_SYSMENU | タイトルバーにコントロールメニューボックスを持つウィンドウを作成します。 |
WS_THICKFRAME | ウィンドウのサイズを設定するための太いフレームを持つウィンドウを作成します。 |
WS_MINIMIZEBOX | 最小化ボタンを持つウィンドウを作成します。 |
WS_MAXIMIZEBOX | 最大化ボタンを持つウィンドウを作成します。 |
ほとんどのスタイルが明確な意味をもっているのに対し、WS_OVERLAPPED は何のスタイル指定なのかよくわからない。
Windows SDK 関連のヘッダーファイルを検索してみると、WinUser.h にウィンドウスタイル定数がまとめて定義されている。
/* * Window Styles */ #define WS_OVERLAPPED 0x00000000L
値は 0。つまりビットとしての意味はなく、指定してもしなくても影響がない。
WS_VISIBLE
DirectX のサンプルなどで WS_POPUP と同時に使われることが多い。マニュアルには、
WS_VISIBLE
最初に表示されるウィンドウを作成します。
としか書かれていない。
WS_VISIBLE を付けたり外したりする実験をした後にやっとわかったが、ShowWindow を実行しなくとも表示される、というスタイルだった。「最初に表示される」というのはそういう意味だったのか。