如题,  似乎不容易做到

解决方案 »

  1.   

    完全挡着=Visible and not Showing
    部分挡着=Visible and Showing and (some forms above)
      

  2.   

    通过消息WM_ACTIVATE 可以知道。
      

  3.   

    先调用InvalidRect刷新整个窗口, 然后在WM_PAINT消息前调用GetUpdateRgn判断返回值, 如果是COMPLEXREGION或者NULLREGION说明窗口被遮住了, 如果是SIMPLEREGION则要再调用GetRgnBox判断是否和窗口大小一样, 如果不一样也说明窗口被遮了
      

  4.   

    看该窗体是否是得到焦点的嘛,即Form1.Focused 是真是假,就可以了.
    如果挡住了,就Form1.SetFocus
      

  5.   

    ,,,
    不是, 是窗口上有个ACTIVEX的控件, 我想判断别的窗口是否把它挡着了,  不能重栽ACTIVEX控件的消息
      

  6.   

    谁说要重载消息的?
    只要连续调用InvalidRect和GetUpdateRgn就可以了, 只要在InvalidRect和GetUpdateRgn之间没执行Application.ProcessMessages都可以.