已知某个应用程序一个窗体中的一个控件的Hwnd,我要如何得到其左(右)边最近的一个控件的Hwnd?(万一没有,也可以判断出来)?(30分)

  • 主题发起人 主题发起人 mynlxx
  • 开始时间 开始时间
M

mynlxx

Unregistered / Unconfirmed
GUEST, unregistred user!
问题如题!
 
先获取该控件的位置,然后用坐标递增的方法通过 WindowFromPoint 获取相邻的控件的 HWnd
但是在这之前要先枚举你的已知控件的兄弟控件的句柄,用来判断你所获取得相邻控件的句柄
是否是与你的一直控件同属一个父窗口(控件)。这个方法比较麻烦:(
也许 ChildWindowFromPoint 能更简单一点。
 
主要是不知道如何判断其相邻?
 
假设我同一个窗体中有几十个控件,而我要找其中一个最水平方向最相近的控件该如何找?
 
WindowFromPoint 不是要传一个 X 坐标和一个 Y 坐标吗?
比如已知控件两个坐标和尺寸分别为:aX, aY, aHeight, aWidth

先找右边相邻的:
for i := 1 to 100 do
begin
newX := aX + aWidth + i;
newHwnd := WindowFromPoint(Point(newX, aY));
if ...
end;

这就是我刚才说的坐标递增的方法,的确不是什么好方法,不过
我的这笨脑子也想不出什么更好的方法:)

当然,反过来也行,先枚举已知控件的所有兄弟控件,循环判断
每一个兄弟控件的坐标与已知控件的坐标的关系,我想这样也许
更快一些。
 
不错,这样倒不失为一个好方法,这个问题还是再放一会吧,看有没有别的兄弟有更
好的方法再结束问题。
 
接受答案了.
 

Similar threads

回复
0
查看
830
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部