比如我有个窗体有topmost,我想将它做成相当于覆盖膜一样的东西,至少要求作用于其上的鼠标操作能被传递到被其盖住的某些窗口上,在该窗体上没有作用。

解决方案 »

  1.   

    在子类中用sendmessage
    要点是要找到鼠标位置的窗口的HWND
      

  2.   

    SendMessage()
    PostMessage()
      

  3.   

    就是不会找到鼠标所在点的HWND
    好像很久以前软件报上有一篇讲透明窗体的文章中提到让窗体上的操作可透过,好像十分简单,但我找不到了。解决这个问题我只有今天而已,各位高手帮忙啊!!!!!!!!!!!我加分!!!
      

  4.   

    暂时使透明窗体INVISIBLE,用WindowFromPoint找到鼠标位置的窗口的HWND,
    回复透明窗体可视,SendMessage(),PostMessage()向鼠标位置的窗口的HWND发信Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
      

  5.   

    对了,千万不可以使窗体invisible
      

  6.   

    Windowfrompoint隔着窗口怎么得到句柄?
      

  7.   

    哎,boss又要扣我奖金了。
    真的没人知道??
    帮着查查2000年的电脑报或是软件报也好啊!!
    急求各位高人帮助!!
      

  8.   

    我刚才干了些类似的事情,得到鼠标所在位置的API是 GetCursorPos,然后再用WindowFromPoint得到此点的窗口句柄,这样就可以发送消息了
      

  9.   

    我只知道WindowFromPoint,不知道别的了
    不过我可以提供你一个苯法子
    用EnumWindows列举所有的窗口,再用GetWindowRect得到每个窗口的位置
    最后判断是否与你的窗口重叠就可以了
      

  10.   

    重要的是用WindowFromPoint得到的句柄是自己的窗口啊!!我要使“操作可透过”就是要得到下层窗口的句柄!!
      

  11.   

    先把你得到的句柄这个窗口给Hide,再来一次就是下层的了,然后再Show出来。
      

  12.   

    我有一个思路:
    用“GetWindow”往下查找窗体,用“GetWindowRect”取得窗体的区域,与透明区域做比较。这样就能找到下级窗体的句柄。