如何实现移动一个Form,另一个Form一块移动(20分)

  • 主题发起人 主题发起人 srw
  • 开始时间 开始时间
用setwindowplacement来做就可以了.
 

Declare Function SetWindowPlacement&
Lib "user32" ( _
ByVal hwnd As Long, _
lpwndpl As WINDOWPLACEMENT)

【说 明】
设置窗口状态和位置信息

【返回值】
Long,非零表示成功,零表示失败。会设置GetLastError

【参数表】

hwnd ----------- Long,欲设置位置信息的窗口的句柄
lpwndpl -------- WINDOWPLACEMENT,这个结构包含了窗口的位置与状态信息

cytown: 怎么才能得到主窗口移动的消息呢?
 
type
TForm1 = class(TForm)
.....
public
offsetX, offsetY: Integer;
// 保存form2与form1的偏移值
private
procedure WMWindowPosChanged(var Msg: TWMWindowPos);
message WM_WINDOWPOSCHANGED;
end;

....
procedure TForm1.WMWindowPosChanged(var Msg: TWMWindowPos);
begin
inherited;
form2.top := form1.top + offsetx;
form2.left := form1.left + offsety;
end;
 
比较支持另一只眼的用法,用信息似乎更容易些。
不知道WINAMP是用那一个方法?
 
呵呵, eyes的省事:-)
 
好像可已通过设置do
ck 属性来实现 。问题是不是存在时间太长了,版主不如把分分了吧
 
srw:还有什么问题吗? 如果没有问题请接受答案.
 
将主form 的FormStyle属性设置为MDIFORM,受控Form 设置为MDIChild大约就可以了,but when you move the mdichild form,the mdiformdo
esn't move together
 
时间太久,强制结束。 wjiachun
 
后退
顶部