关于WindowFromPoint的有关问题
关于WindowFromPoint的问题
都说WindowFromPoint不获取禁或隐藏窗体的句柄, MSDN上面也是这么说的
我试了一下,delphi用TForm类创建的窗体,你把这个窗体设为Enable=False
你用该函数去获取同样可以取得句柄啊,这是咋回事呢?
代码:用一个定时器
procedure TForm1.Timer1Timer(Sender: TObject);
var
aPoint:TPoint;
aHandle:HWND;
ClassName:PChar;
begin
GetMem(ClassName,255);
GetCursorPos(aPoint);
aHandle:=WindowFromPoint(aPoint);
if aHandle<>null then
begin
GetWindowText(aHandle,ClassName,255);
Memo1.Lines.Add(StrPas(ClassName));
end;
FreeMem(ClassName);
end;
你再建个Form2,把Form2设为disabled,当鼠标移到Form2上,也可以获取到这个窗体的句柄啊,
你在窗体上放个按钮,把它设为disabled,确实取不到
各位高人,能不能给个解释,是不是delphi用TForm类创建的窗体特别啊,还是这个函数对toplevel窗体无效?或者说这个函数所说的disable是别的解释?
------解决方案--------------------
这和Delphi无关,是Windows这样认为的.
你把计算器主窗口设置Enbaled=False,然后用WindowFromPoint同样可以得到句柄.
都说WindowFromPoint不获取禁或隐藏窗体的句柄, MSDN上面也是这么说的
我试了一下,delphi用TForm类创建的窗体,你把这个窗体设为Enable=False
你用该函数去获取同样可以取得句柄啊,这是咋回事呢?
代码:用一个定时器
procedure TForm1.Timer1Timer(Sender: TObject);
var
aPoint:TPoint;
aHandle:HWND;
ClassName:PChar;
begin
GetMem(ClassName,255);
GetCursorPos(aPoint);
aHandle:=WindowFromPoint(aPoint);
if aHandle<>null then
begin
GetWindowText(aHandle,ClassName,255);
Memo1.Lines.Add(StrPas(ClassName));
end;
FreeMem(ClassName);
end;
你再建个Form2,把Form2设为disabled,当鼠标移到Form2上,也可以获取到这个窗体的句柄啊,
你在窗体上放个按钮,把它设为disabled,确实取不到
各位高人,能不能给个解释,是不是delphi用TForm类创建的窗体特别啊,还是这个函数对toplevel窗体无效?或者说这个函数所说的disable是别的解释?
------解决方案--------------------
这和Delphi无关,是Windows这样认为的.
你把计算器主窗口设置Enbaled=False,然后用WindowFromPoint同样可以得到句柄.