Вам нужно использовать регионы, то, что все еще видно из окна, может быть сложным набором прямоугольников.Начните с окна, которое вы хотите проверить, GetWindowRect и CreateRectRegion, чтобы создать область для прямоугольника окна.
Вызовите GetWindow () в цикле, передавая GW_HWNDPREV.Который возвращает предыдущее окно в Z-порядке, чтобы оно могло перекрываться.GetWindowRect (), чтобы получить его прямоугольник, CreateRectRegion () и объединить его с исходной областью окна, используя CombineRgn () с RGN_DIFF.
Когда GetWindow возвращает NULL, вы нашли все возможные перекрывающиеся окна.Используйте GetRgnBox, чтобы проверить, осталось ли что-нибудь от региона.Если есть, то по крайней мере одна часть окна не была перекрыта.