怎样让一个VB程序的窗体刚好在另一个程序的窗体上方(就是不挡住最顶上的程序)?

2025-01-05 08:29:38
推荐回答(1个)
回答1:

貌似这个比较复杂,
第一步:找句柄。先根据窗口名字找到在下面的那个窗口的句柄,用api findwindow

第二步,放钩子。用获得的句柄给那个窗口放一个钩子,截获WM_SIZE消息,用api setwindowshook。

第三部,获得该窗口位置。截获WM_SIZE消息后,获得下面窗口的位置 , 用api getwindowrect '若果我没有记错的话,应该是这个api

第四步:调整本窗口的位置。根据上一步获得的窗口位置,调整本窗口的位置,用api setwindowslong。

第五步:将信息传回给下面窗口。WM_SIZE消息放还给下面窗口,不然下面窗口就不动了。貌似用到的api是 CallNextHookEx.

最后一步:退出程序的时候不要忘记释放钩子,api UnhookWindowsHookEx

以上给个思路,api、钩子不懂的去百度下,会有很详细的解说。

其实核心是放钩子,取得下面窗口变更大小和位置时候的消息。
如果那个窗口不动的话完全可以省略放钩子的过程,直接取得窗口位置就可以了。