ウィンドウ内でrectが表示されているかどうかを判断します
質問
ウィンドウ内の長方が完全に見えるかどうかを判断したいと思います。
私はrectvisibleを見つけましたが、その関数は、rectの一部が見えるかどうかを決定します。rect全体が見えるかどうかを知りたいです。
これには何か機能がありますか?
解決
まず、システムのクリッピング領域(ウィンドウの可視領域)を使用して領域に入手してください GetRandomRgn
. 。 「システム領域」の詳細を読む ここ. 。次に、画面座標にあるため、その領域を相殺します(リンクした記事には例があります)。その後、長方形から領域を作成します CreateRectRgn
そして、「長方形領域」の部分を「システム領域」の一部ではないものと組み合わせます。 CombineRgn
長方形領域を最初の領域として、システム領域を2番目の領域として通過し、 RGN_DIFF
として fnCombineMode
. 。結果がある場合 NULLREGION
その後、長方形は完全に表示されます - それは任意のウィンドウで完全または部分的に覆われていません(上位レベルかどうか)、または完全または部分的に画面外ではありません。
全体として、あなたがあなたの問題に間違った方法で近づいている可能性があります。誰かが達成しようとしていることを言った場合、おそらくより単純なアプローチを示唆する可能性があります。
他のヒント
使用する ptvisible 長方形の各角に。
PTVisible関数は、指定されたポイントがデバイスコンテキストのクリッピング領域内にあるかどうかを決定します。
ウィンドウと長方形の座標を使用して簡単な比較を行うことができますか。
長方形の左の縦座標が窓の左の境界の右側にあることを確認してください。右の縦座標は、窓の右の境界の左側にあります。そして、上部と下部に似ていますか?
唯一のしわは、論理座標と物理座標の両方を使用している場合の場合があります。その場合、変換を実行する必要があります。