procedure TCustomForm.Dock(NewDockSite: TWinControl; ARect: TRect);
var
  PrevDockSite, PrevParent: TWinControl;
begin
  PrevParent := Parent;
  PrevDockSite := HostDockSite;
  inherited Dock(NewDockSite, ARect);
  if (Parent <> nil) and (Parent = PrevParent) and
    (PrevDockSite <> HostDockSite) then RecreateWnd;
end;
delphi 中的源代码。
为什么要 RecreateWnd(重新创建Handle)?这样做的话,我在 Form.OnCreateForm 中取得的Self.Handle 和 Button1.OnClick 中取得的不一样。