type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMMOVE(var Msg: TWMMOVE); message WM_MOVE;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMMOVE(var Msg: TWMMOVE);
begin
Caption := Format('%d,%d', [Msg.XPos, Msg.YPos]);
end;
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMMOVE(var Msg: TWMMOVE); message WM_MOVE;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.WMMOVE(var Msg: TWMMOVE);
begin
Caption := Format('%d,%d', [Msg.XPos, Msg.YPos]);
end;
解决方案 »
- 求助各位大神,新人新建工程就遇到问题了。。。。
- delphi 让3个Dbgrid显示关联信息
- TStringGrid如何设置指定单元格的背景颜色和文字居中
- 大家帮我看看这个统计记录的问题!
- 点击任何地方总是响应鼠标事件?
- 求线索化二叉树的Pascal代码(我的代码附在里面,但是有错,请帮忙Debug)!!!不够的解决后+100
- Form类多层继承引起的问题 ?
- 问几个简单问题,谢谢.
- Missing right quote错误,决解问题一定给分,thank you!
- BDE坏了,发给我个BDE及升级包或提供网址者得分
- 关于adocommand中写restore database first,遇到错误信息'the RAID set for database 'first' is missing member number 1
- 千山兄,请进!!!
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
FHandle: THandle;
FX: Integer;
FY: Integer;
public
{ Public declarations }
end;var
Form2: TForm2;implementation{$R *.dfm}const
MY_MESSAGE = WM_USER + 10;procedure TForm2.FormCreate(Sender: TObject);
begin
FHandle := FindWindow('TForm1', 'Form1');
if FHandle = 0 then ShowMessage('没有运行监听程序');
end;procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
vWMMOVE: TWMMOVE;
begin
if Tag = 0 then Exit;
if FX > 0 then begin
Left := Left + (X - FX);
Top := Top + (Y - FY);
end;
if FHandle = 0 then Exit;
vWMMOVE.Msg := MY_MESSAGE;
vWMMOVE.Unused := Handle;
vWMMOVE.XPos := Left;
vWMMOVE.YPos := Top;
SendMessage(FHandle, MY_MESSAGE, TMessage(vWMMOVE).WParam, TMessage(vWMMOVE).LParam);
end;procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FX := X;
FY := Y;
Tag := 1;
end;procedure TForm2.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Tag := 0;
end;end.unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;const
MY_MESSAGE = WM_USER + 10;type
TForm1 = class(TForm)
private
{ Private declarations }
procedure MYMESSAGE(var Msg: TMessage); message MY_MESSAGE;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.MYMESSAGE(var Msg: TMessage);
var
vWMMOVE: TWMMOVE;
vRect: TRect;
begin
TMessage(vWMMOVE) := Msg;
GetWindowRect(vWMMOVE.Unused, vRect);
Caption := Format('Time:%.6f,U:%d,X:%d,Y:%d', [Now, vWMMOVE.Unused,
vWMMOVE.XPos, vWMMOVE.YPos]);
Width := vRect.Right - vRect.Left;
Height := vRect.Bottom - vRect.Top;
Left := vRect.Left + (vRect.Right - vRect.Left);
Top := vRect.Top;
end;end.