Как получить только видимую часть окна (Windows, gdi32, user32 и т. Д.)

Я хочу получить только видимую часть окна в windows, как область.

Хотите получить только ту область, которую видит пользователь. Программно, конечно. Вот пример. У меня следующая композиция окна:

+------------------------------------------+
 |                                          |
 |           +=============+                |
 |           |             |                |
 |           |    A   +--------------------------+
 |           |        |                          |
 |    C      |        |             B            |
 |           |        +--------------------------+
 |           |             |                |
 +-----------|             |----------------+
             |             |
             +-------------+

Допустим, меня интересует только окно A. Тогда мне понадобится дескриптор области, которая будет выглядеть следующим образом:

          +=============+                
          |             |                
          |    A  +-----+
          |       |                          
          |       |                         
          |       +-----+
          |             |                
          |             |
          |             |
          +-------------+

В качестве альтернативы, я мог бы получить область любого другого окна следующим образом.

До сих пор я использовал это руководство: http://blogs.msdn.com/b/oldnewthing/archive/2003/09/02/54758.aspx

И я согласен, что GetClipBox возвращает 0, 1, 2 или 3, если у вас, соответственно, 0 -> Ошибка, 1 для NULLREGION (результирующий rgn невидим для пользователя), 2 -> SIMPLEREGION и 3 для COMPLEXREGION. Пока мне нужна сложная область.

Главный вопрос: Но как мне получить ее координаты и размеры ?

(Добавлена ​​информация)

Можно ли восстановить КОМПЛЕКСНЫЙ РЕГИОН ( Это было создано ОС, а не мной) для простых РЕГИОНОВ, из которых он состоит. Фэн Юань предполагает, что вы не можете:

http://www.codeguru.com/forum/archive/index.php/t-126543.html

(Добавлена ​​информация)

Итак, есть ли способ найти область A и преобразовать ее в PolyPath или красивую геометрическую фигуру с координатами ее углов ?

Я использую JNA (Java), кстати, но кода C # или .VB, решающего ту же проблему, было бы достаточно.

Ура.

5
задан Nikola Yovchev 18 November 2010 в 09:01
поделиться