質問: ウィンドウの矩形と各ディスプレイ領域の矩形の重なりの面積の合計が、ウィンドウの面積と等しいこと となったのですが、ここで疑問は、こんなややこしい判定をどのアプリもやっているものなのか? 何かもっとスマートな定石はないものか? という点です。 プラットフォーム依存の解決でも構いません、ノウハウをお持ちでしたら教えてください。 --- 追記 --- 条件はこう簡略化してもだいたい問題ないですかね。 ●ウィンドウの4隅の点がそれぞれ、いずれかのディスプレイ矩形内に入っている さらには、ウィンドウ全体が表示されていることまで望まなければ ●次の2つの点が、いずれかのディスプレイ矩形内に入っている ・ウィンドウ左上端 ・ウィンドウ左上端から(24,24) この条件を満たすなら、少なくともウィンドウの存在に気付いて適切な位置に移動することは可能ですから。 --- 追記 --- 「終了時位置再現など邪悪な機能である、搭載しようとすべきでない」などといったご意見でも歓迎です。 --- 追記 --- プラットフォーム非限定の形で質問をしていましたが実際にはWindows開発でして、しかもWindowsではAPIがちゃんとありました。 SetWindowPlacement関数 画面外にはみ出す場合のみ位置を補正してくれる座標設定関数です。 クリップされている方もいらっしゃり、他プラットフォームの場合についてのノウハウも集まればなお良いのでまだ質問は開いておきます。
回答: 現在のwindow 位置、大きさを保存する。このとき、画面サイズも取得する。 次回起動時、保存しておいた位置とサイズで復帰する。復帰時の画面サイズの比率で表示位置と大きさを微調整する。100 x 100 以下になった場合は、100x100 の大きさで、画面端に切れないように画面内に収まるように調整する。 1280x1024 、→ 1024x768 なら横 1024/1280 縮小、768/1024縦縮小です。 タブレットの縦横のときは、サイズが16:9とかで、横表示が縦表示になると物凄くコンパクトな画面になっちゃうけど、比率を保ってるから可能な限り前回の画面を復帰してまづ、っていえます、ユーザ要件にもバッチリでづ。 比率で表示開始位置が変化するので、微妙な重なりやオーバーラップで実は開いてる画面が大きい奴の裏に隠れてしまう状況が出てきます。裏に隠れた画面の右数ドットしか見えてないとか、こういう操作性を損ねる状況のときは、更に微調整でづ。