我想仅获取窗口中窗口的可见部分作为区域。如何仅获取窗口的可见部分(Windows,gdi32,user32等)
只想获得用户看到的区域。当然,以编程方式编写代码 。这是一个例子。我有以下窗口组成:
+------------------------------------------+
| |
| +=============+ |
| | | |
| | 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。所以,我需要复杂的地区。
主要问题:但是,如何获得其坐标和尺寸?
(添加信息)
是否有可能重建COMPLEXREGION(这是由操作系统创建的,不是我),以简单的地区,其中它是由。冯远建议您不能:
http://www.codeguru.com/forum/archive/index.php/t-126543.html
(添加信息)
那么,有没有办法找到A的区域和将其转换为POLYPATH或一个不错的几何具有其角落坐标的图形?
顺便说一下,我使用JNA(Java),但解决相同问题的C#或.VB代码就足够了。
干杯。
忘了提及,我想避免使用DWM,兼容性问题。我知道桌面窗口管理器存在什么问题,对于程序员来说非常棒,但是我也想要覆盖XP盒子以及禁用DWM的盒子。 – 2010-11-16 22:29:37
我并不是建议你为任何东西使用DWM;只是指出了一堆问题,如果启用了DWM(如果您希望在XP等之外支持它),那么您必须担心一些问题。 – 2010-11-16 23:17:59
那么一些代码会更好,或者甚至可以保证它可以完成,因为我开始怀疑它可能在XP机器或不运行DWM的机器上。 – 2010-11-17 08:19:03