如何判断一个窗体是否被其他窗体完全遮挡,老规矩--路过有分
完全遮挡的意思就是屏幕上完全看不到该窗体 
 注意该窗体Visible为True 
 这里说的窗体值Window不限于Form,包括按钮、输入框等等等等   
 bool   Calc(IntPtr   AHandle) 
 { 
             {   TODO   :   判断句柄为AHandle的窗体是否被完全遮挡   } 
 }   
 需要考虑各种复杂的情况--窗体包括不规则形状、还有被半透明窗体遮挡也算可见   
 不知道有没有现成的API方法可用,提供线索或思路即可,有可调式代码更佳   
 谢谢关注
------解决方案--------------------路过
------解决方案--------------------板凳先
------解决方案--------------------有个思路 不过不知道用哪个api 
 先通过hwnd获得该控件的矩形区域, 
 在取矩形区域是否有控件的hwnd2 然后比较,类似于spy++的实现
------解决方案--------------------up
------解决方案--------------------窗体规则不规则到不用考虑,在windows中他们都是Rect只是部分部位可能不可见罢了
------解决方案--------------------。
------解决方案--------------------{获取光标的位置} 
     GetCursorPos(MousePoint); 
     Curwindow:=WindowFromPoint(MousePoint); 
     {获得光标所有者的线程ID} 
     GetWindowThreadProcessId(Curwindow, @dwThreadID); 
     {获取路径} 
      if dwThreadID <> 0 then 
       begin 
       hWindow:= OpenProcess(PROCESS_ALL_ACCESS,false,dwThreadID); 
         if hWindow <> 0 then 
           begin 
            if  EnumProcessModules(hWindow,@hMod,sizeof(hMod),cbNeeded)  then 
              begin 
              SetLength(FilePatch, MAX_PATH); 
              iLen := GetModuleFileNameEx(hWindow, hMod, PCHAR(FilePatch),  MAX_PATH); 
                  if  iLen   <>   0  then 
                      begin 
                       SetLength(FilePatch,  StrLen(PCHAR(FilePatch))); 
                       PatchEdit.Text:=FilePatch; 
                      end; 
              end; 
              CloseHandle(hWindow); 
           end; 
       end; 
     {存储窗口坐标的结构体的地址} 
     GetWindowRect(Curwindow,hRect); 
     GetWindowRect(PrevWindow,OldhRect);
------解决方案--------------------这个问题偶也很想知道,帮UP
------解决方案--------------------听说路过有分的哦。
------解决方案--------------------没仔细想过
------解决方案--------------------关注... 
 学习
------解决方案--------------------那我就路过一下下吧
------解决方案--------------------关注... 
 学习 
------解决方案--------------------每个窗体都有一个Region,类似于点的集合.只需用一算法判斷一个窗体是否完全包含另一个窗体即可.
------解决方案--------------------UP
------解决方案--------------------学学....
------解决方案--------------------这就要使用FindWindow首先获取所有的窗口,然后一个循环,对每个窗口的位置(也有一个API,大概是GetWindowInfo吧?存疑)和指定窗口的显示区域判断,再然后可判断两个窗口的Z轴位置(这个API我没用过,在C#中有这个概念,Z轴坐标是独立与XY的第三个坐标轴,相当于层面的意思)。
------解决方案--------------------列举桌面上的所有可见的窗体,然后用每个窗体的Region组成一个GraphicsPath,然后用给定的窗体的Region来比较看一下是否完全被这个GraphicsPath包含了.
------解决方案--------------------