2


1

四角形がウィンドウ内に表示されるかどうかを判別

ウィンドウ内の四角形が完全に表示されるかどうかを確認したいと思います。

RectVisibleを見つけましたが、その関数は四角形の一部が表示されるかどうかを決定します。四角形全体が表示されるかどうかを知りたいです。

このための機能はありますか?

3 Answer


2


四角形の各コーナーでhttp://msdn.microsoft.com/en-us/library/dd162890%28v=VS.85%29.aspx[PtVisible]を使用します。

_ PtVisible関数は、指定されたポイントがデバイスコンテキストのクリッピング領域内にあるかどうかを判断します。 _


2


まず、http://msdn.microsoft.com/en-us/library/dd144918%28VS.85%29.aspx [GetRandomRgn]を使用して、システムクリッピング領域(ウィンドウの表示領域)を領域に取得します。 「システム地域」の詳細については、http://www.codeproject.com/KB/GDI/cliprgnguide.aspx [こちら]をご覧ください。 次に、画面座標内にあるため、その領域をオフセットします(リンクした記事には例があります)。 その後、http://msdn.microsoft.com/en-us/library/dd183514%28VS.85%29.aspx [CreateRectRgn]を使用して長方形から領域を作成し、「長方形領域」の部分を結合します「システム地域」の一部ではないものと:それはhttp://msdn.microsoft.com/en-us/library/dd183465%28v=VS.85%29.aspx [CombineRgn]を呼び出して渡している最初の領域としての長方形領域、2番目の領域としてのシステム領域、および「fnCombineMode」としての「RGN_DIFF」。 結果が「NULLREGION」の場合、長方形は完全に表示されます-ウィンドウによって完全または部分的に覆われていないか(トップレベルかどうか)、または完全または部分的に画面外にありません。

全体として、問題に間違った方法で近づいている可能性があります。 あなたが誰かを達成しようとしてきたことを伝えたなら、おそらくより簡単なアプローチを提案することができます。


1


ウィンドウと四角形の座標を使用して簡単な比較を行うことができます。

長方形の左縦座標がウィンドウの左境界線の右にあることを確認してください。右の縦座標は、ウィンドウの右境界線の左側です。上部と下部で同様ですか?

唯一のしわは、論理座標と物理座標の両方を使用している場合です。その場合、変換を実行する必要があります。