2008年07月30日

WS_POPUPウィンドウを最小化

開発環境C/C++,WIN32

Windowsアプリケーションでは、ウィンドウのタイトルバーや枠を表示せず、画面一杯にアプリケーションデータを表示することはフルスクリーン化と呼ばれています。 このフルスクリーン化を実現する方法のひとつに、ウィンドウスタイルをWS_POPUPにしてウィンドウサイズを画面サイズと同じにする、という方法があります。 しかし、WS_POPUPにすると、Windowsキー+Mによる最小化が効かなくなります。私はこのショートカットをよく使うので大変不便に感じました。

そこで色々試行錯誤したところ、ウィンドウスタイルにWS_POPUPだけでなく、WS_MINIMIZEBOXを追加すると、Windowsキー+Mが有効になることが分かりました。キャプションがなくてもWS_MINIMIZEBOXは効果があるのですね。

WS_MINIMIZEBOXスタイルを追加したフルスクリーン化のコードっぽいものを参考までに置いておきます。

HWND Handle = ウィンドウハンドル;
::SetWindowLong(Handle, GWL_STYLE, WS_POPUP | WS_MINIMIZEBOX | WS_VISIBLE);
::SetMenu(Handle, NULL);
::SetWindowPos(Handle, HWND_TOP, 画面サイズ, SWP_FRAMECHANGED | SWP_NOCOPYBITS);