我想僅獲取窗口中窗口的可見部分作爲區域。如何僅獲取窗口的可見部分(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