在子窗口中重载CreateParams函数,并将WndParent设置为0即可,具体代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm2 = class(TForm) private { Private declarations } public { Public declarations } protected //重载此函数 procedure CreateParams(var Params: TCreateParams); Override; end; var Form2: TForm2; implementation {$R *.dfm} procedure TForm2.CreateParams(var Params: TCreateParams); begin inherited; With Params do begin WndParent := 0; end; end; end. |
当我们把Params.WndParent设置为0时,Delphi在调用CreateWindowEx创建该窗口时,会将hWndParent 参数设置为相同的值(此处为0),为0则意味着要创建的窗口的所有者为桌面。此值不能在运行期通过Windows ApI改变,可能是因为窗口的拥有者不能在运行期改变的原因。
一些有用的链接