OpenSiv3D icon indicating copy to clipboard operation
OpenSiv3D copied to clipboard

枠なしで、マウスによるリサイズが出来るウィンドウ

Open tomolatoon opened this issue 3 years ago • 2 comments

概要

枠なし(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

tomolatoon avatar Feb 10 '22 23:02 tomolatoon

参考までに、VisualStudioは透明なウィンドウを4辺に配置してFramelessなウィンドウのリサイズ(と光る枠)を実現しています。 http://grabacr.net/archives/507

sthairno avatar Feb 25 '22 16:02 sthairno

Visual Studio以外の実装を調べてみました。 ChromeとFirefoxは見た目よりも広いウィンドウを持ち、ドロップシャドウ部分にリサイズ判定がありました。 VSCodeはウィンドウの四隅にリサイズ判定があり、その部分のクリック判定は無効化されていました。

若干誇張気味に図に示してみました。オレンジがリサイズ判定がある部分です。

image

sthairno avatar Aug 10 '22 11:08 sthairno