Delphi WinApi: GetParent、SetParent、MoveWindow - 获取、指定父窗口和移动窗口


本文整理自网络,侵删。

 
提示: SetParent 应该 Windows.SetParent, 因为 TForm 的父类有同名方法.
//声明:

{获取父窗口句柄}
GetParent(hWnd: HWND): HWND;

{指定父窗口}
SetParent(
  hWndChild: HWND;    {子句柄}
  hWndNewParent: HWND {父句柄}
): HWND;              {成功返回原父窗口句柄; 失败返回 0}

{移动窗口}
MoveWindow(
  hWnd: HWND;               {窗口句柄}
  X, Y: Integer;            {位置}
  nWidth, nHeight: Integer; {大小}
  bRepaint: BOOL            {True 表示刷新; False 表示不刷新}
): BOOL;


//举例:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if GetParent(Edit1.Handle)=Handle then
  begin
    Windows.SetParent(Edit1.Handle, Button1.Handle);
    MoveWindow(Edit1.Handle, 0,0, Edit1.Width, Edit1.Height, True);
  end else begin
    Windows.SetParent(Edit1.Handle, Self.Handle);
    MoveWindow(Edit1.Handle, 0,0, Edit1.Width, Edit1.Height, True);
  end;
end;

end.


相关阅读 >>

Delphi 中 inputquery 实现密码输入

Delphi 隐藏桌面图标和任务栏

Delphi 查看指定文件是否在进程列表中

Delphi检测当前鼠标点击处是否在指定控件内部

Delphi xe7实现获取程序是否已管理员模式运行以及运行的windows用户名

Delphi 判断当前程序是否是活动窗口

Delphi 每年、月、周、日的开始与结束的时间startofayear … startoftheyear … endofayear … endoftheyear

Delphi webbrowser控件属性

Delphi与正则表达式

Delphi 实现一个程序在另一个程序内运行

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...