窓の内側の長方形が完全に見えるかどうかを確認したいと思います。
RectVisibleを見つけましたが、その関数は、rectの一部が表示されているかどうかを判別し、rect全体が表示されているかどうかを知りたいです。
このための機能はありますか?
長方形の各コーナーでPtVisibleを使用します。
PtVisible関数は、指定されたポイントがデバイスコンテキストのクリッピング領域内にあるかどうかを判別します。
まず、を使用して、システムクリッピング領域(ウィンドウの表示領域)を領域に取り込みますGetRandomRgn
。「システム領域」について詳しくは、こちらをご覧ください。次に、その領域が画面座標にあるため、その領域をオフセットします(リンクした記事に例があります)。その後、長方形から領域を作成し、CreateRectRgn
「長方形領域」の一部を「システム領域」の一部ではない部分と組み合わせます。つまりCombineRgn
、長方形領域を最初の領域として渡し、システム領域を次のように渡します。 2番目の領域、およびRGN_DIFF
としてfnCombineMode
。結果が次の場合、NULLREGION
長方形は完全に表示されます-ウィンドウ(トップレベルかどうか)で完全または部分的に覆われていないか、完全にまたは部分的に画面外にありません。
全体として、問題に間違った方法でアプローチしている可能性があります。あなたが誰かを達成しようとしていることを話したなら、おそらくもっと簡単なアプローチを提案するかもしれません。
ウィンドウと長方形の座標を使用して簡単な比較を行うことができますか。
長方形の左縦座標がウィンドウの左境界線の右側にあることを確認してください。右の縦座標は、ウィンドウの右の境界線の左側にあります。上部と下部も同様ですか?
唯一のしわは、論理座標と物理座標の両方を使用している場合である可能性があります。その場合、変換を実行する必要があります。
クリップの長方形とポイントの可視性を処理するすべての機能は、WindowsVistaの新しいデスクトップ構成機能で機能しなくなりました。この機能は、Windows XP以前、およびAero / DesktopCompositionがオフになっているWindows7で正常に機能しますが、それ以外の場合は、ウィンドウ全体が表示されていると常に主張します。