OpenSiv3D
OpenSiv3D copied to clipboard
枠なしで、マウスによるリサイズが出来るウィンドウ
概要
枠なし(WindowStyle::Frameless
の見た目)のウィンドウかつ、マウスによるリサイズが出来るウィンドウがあると、ピクチャーインピクチャーなどで有用だと思います。
Windowsでの実現方法
当方Windowsでのみ開発していますので、Windowsでの実装について少し調べてきました。 結論ですが、枠なしウィンドウに「独自に当たり判定から実装する」か、「フレーム部分にも描画する」(下記資料)か、の2択だと思われます。
Win32のウィンドウスタイルをWS_SIZEBOX
にする方法は、Windows Vista以降で上辺境界線が完全に消えない仕様があるのでダメでした。(上辺境界線への描画が出来れば有用な気はしますが…)
資料:https://stackoverflow.com/questions/39731497/create-window-without-titlebar-with-resizable-border-and-without-bogus-6px-whit
参考までに、VisualStudioは透明なウィンドウを4辺に配置してFramelessなウィンドウのリサイズ(と光る枠)を実現しています。 http://grabacr.net/archives/507
Visual Studio以外の実装を調べてみました。 ChromeとFirefoxは見た目よりも広いウィンドウを持ち、ドロップシャドウ部分にリサイズ判定がありました。 VSCodeはウィンドウの四隅にリサイズ判定があり、その部分のクリック判定は無効化されていました。
若干誇張気味に図に示してみました。オレンジがリサイズ判定がある部分です。