Сначала введите системную область отсечения (видимую область окна) в область, используя GetRandomRgn
. Узнайте больше о «системном регионе» здесь . Затем сместите эту область, так как она находится в экранных координатах (пример статьи, на которую я ссылался). После этого создайте область из вашего прямоугольника с помощью CreateRectRgn
и объедините части вашей «области прямоугольника» с теми, которые не являются частью «системной области»: это вызывает CombineRgn
, передавая область прямоугольника в качестве первой области, и область системы в качестве второй области, и RGN_DIFF
в качестве fnCombineMode
. Если результат равен NULLREGION
, то ваш прямоугольник полностью виден - он не полностью или частично не покрыт каким-либо окном (верхним уровнем или нет) или не полностью или частично за пределами экрана.
В общем, есть вероятность, что вы подходите к своей проблеме неправильно. Если вы рассказали, чего пытались достичь, кто-то может предложить более простой подход.