当窗口正在被拖拽(移动)时,触发什么事件?如何响应?(100分)

  • 主题发起人 主题发起人 xywen
  • 开始时间 开始时间
X

xywen

Unregistered / Unconfirmed
GUEST, unregistred user!
我需要知道窗口在被拖拽(移动)时窗口的位置,但不知窗口被拖拽(移动)时会触发什么事件?又该如果响应?

给出一个窗口移动时 ShowMessage('Ok'); 的例程即可。
 
触发了这两个消息,拦截这两个消息即可.
WM_MOVE 移动后
WM_MOVING 移动中...
 
COPY过来的,你参考一下
-------------------------------
var
Form1: TForm1;
dx, dy: integer;

implementation

{$R *.dfm}


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
dx := X;
dy := y;
//close;
end;
//鼠标移动时移动窗口

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
mx, my: integer;
begin
if Shift = [ssleft] then
begin
mx := X - dx;
my := Y - dy;
Form1.Left := Form1.Left + mx;
Form1.Top := Form1.Top + my;
Form1.Caption := intToStr(X) + ':' + intToStr(Y);
end;
end;
 
楼上的方法在按住Form的Caption拖动时就不行!
 
应该是激发WM_NCHITTEST事件。该事件被激发后,判断鼠标的位置,如果是Caption则可以拖动,
所以可以欺骗Windows用来拖动无标题拦的窗体。
 
一定会触发一个事件或消息!
 
找一找帮助,与Pos有关的吧,记不清了,是个消息。
 
没人能给出一个可行的例程吗?
 
onchange 事件
 
TForm中没有OnChange事件!
 
wm_windowposchanged.
wm_windowposchanging.
 
本人水平比较菜,能不能给出一个窗口移动时 ShowMessage('Ok'); 的例程。
 
rocedure DoOnWindowPosChanging(var Message:TMessage);Message WM_windowposchanging;

procedure TForm1.DoOnWindowPosChanging(var Message: TMessage);
begin
Memo1.Lines.Add(DateTimeToStr(Now)+' '+InttoStr(Self.Left));
end;
 
多谢指教!
 

Similar threads

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