有关findwind()及窗体坐标的问题(50分)

  • 主题发起人 主题发起人 dhzy
  • 开始时间 开始时间
D

dhzy

Unregistered / Unconfirmed
GUEST, unregistred user!
请问窗体类名为wswindow是什么的?为何在它下面的按钮或窗体无法用findwindex找到其句柄?屏幕上的坐标与窗体上的坐标如何转化(是否和分辨率有关)?
 
》》屏幕上的坐标与窗体上的坐标如何转化<br>ClientToScreen(API)<br>ScreenToClient(API)
 
能够说的详细写吗?最好有例子
 
方法:<br>&nbsp; &nbsp; &nbsp; var<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyPoint:TPoint;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScPoint:TPoint;<br>&nbsp; &nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyPoint.x:=1;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;MyPoint.y:=2;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ScPoint:=ClientToScreen(MyPoint);<br>&nbsp; &nbsp; &nbsp; end;<br>&nbsp; 注:ScPoint为相对于屏幕上的点
 
//为何在它下面的按钮或窗体无法用findwindex找到其句柄<br>你用 EnumChildWindows 遍历看看结果如何
 
我用spy++查看也找不到窗体内按钮的句柄,只能显示出主窗体为wswindow类,在它里面的按钮句柄显示不出来。
 
那应该窗体内的按钮是没有Handle的,比如说你放一些不是从 TWinControl 继承下来的控件,如 TSpeedButton,TImage 之类的,那你在spy++中也看不到有这些控件存在
 
那如何才能用鼠标很准确的点击它里面的按钮呢?(因为无法找到其句柄,只能用坐标来定位,不知如何将鼠标定位到其窗体上某一点的位置)
 
定位就不太好办了,除非你事先知道它的坐标,那么发送给窗体句柄就可以了,比如<br>var<br>&nbsp; h: HWND;<br>&nbsp; X,Y: Integer;<br>begin<br>&nbsp; h:=FindWindow(Nil,'TForm1');<br>&nbsp; X:=16;<br>&nbsp; Y:=16;<br>&nbsp; SendMessage(h,WM_LButtonDown,MK_LBUTTON,Y shl 16 or X);<br>&nbsp; SendMessage(h,WM_LButtonUP,MK_LBUTTON,Y shl 16 or X);<br>end;<br>
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
698
SUNSTONE的Delphi笔记
S
S
回复
0
查看
786
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部