delphi 如果获得窗口坐标?

下面的代码只可以获得Form的相对坐标,,如果移动出去form的范围坐标就变负数了。我要的是窗口坐标能随我鼠标动,这窗口坐标也跟着变。请高手指导下procedureTFo... 下面的代码只可以获得Form 的相对坐标,,如果移动出去form 的范围坐标就变负数了。
我要的是窗口坐标能随我鼠标动,这窗口坐标也跟着变。请高手指导下
procedure TForm1.Timer2Timer(Sender: TObject);
var
p:tpoint;

begin
getcursorpos(p);
p:=ScreenToClient(p);
label4.Caption:=format('x: %d, y: %d',[p.X,p.y]);

end;
我想要的是,我的鼠标无论移动到那个窗口,都能显示鼠标在该窗口的相对坐标,可我的代码就只能显示出 一个窗口的相对坐标,不论鼠标移动到那里都是第一个窗口的相对坐标。
展开
 我来答
shjlaoin
2009-08-27 · TA获得超过661个赞
知道小有建树答主
回答量:78
采纳率:0%
帮助的人:72.8万
展开全部
你的意思是不是:只要鼠标动了,然后,窗体的坐标就是鼠标的坐标?也就是说,窗口跟着鼠标走?如果是那样的话,下面的这个程序就可以了……
procedure TForm1.Timer1Timer(Sender: TObject);
var
P: TPoint;
begin
GetCursorPos(P);
form1.Caption:= Format('X: %d, Y: %d',[P.X, P.Y]);
form1.left:=p.X;
form1.top:=p.Y;
form1.Show;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TheFiend
2009-08-27 · TA获得超过625个赞
知道大有可为答主
回答量:1346
采纳率:0%
帮助的人:1214万
展开全部
楼上说的 能让窗体的左上角 和 鼠标重合 移动.
如果不让重合移动.还可以这样.
procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if (oldx=MaxInt) or (oldy=MaxInt) then
begin
oldx:=x;
oldy:=Y;
Exit;
end;
Left:=Left + x - oldx;
Top:= Top + y - oldy;
oldx:=x;
oldy:=y;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MyPrettyLife
2009-08-27 · TA获得超过588个赞
知道小有建树答主
回答量:550
采纳率:0%
帮助的人:771万
展开全部
procedure TForm1.Timer2Timer(Sender: TObject);
var
p: TPoint;
h: HWND;
begin
GetCursorPos(p);
h := WindowFromPoint(p);
Windows.ScreenToClient(h, p);
label4.Caption:=format('x: %d, y: %d',[p.X,p.y]);
end;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式