首页 > Windows开发 > 详细

IsChild API与Delphi里的Parent不是一回事(Windows窗口自己不能是自己的子窗口,但Delphi不一定)

时间:2015-08-18 22:36:52      阅读:421      评论:0      收藏:0      [点我收藏+]

新建一个Form,上面放一个Button1,一个Panel1,然后在Panel1上再放一个Button2,测试结果:

procedure TForm1.Button1Click(Sender: TObject);
begin
    if IsChild(handle, handle) then ShowMessage(yes) else ShowMessage(no); // 显示No, 因为Form自己不是自己的Child

    if IsChild(handle, button1.handle) then ShowMessage(yes) // 显示Yes
    else ShowMessage(no);

    if IsChild(handle, panel1.handle) then ShowMessage(yes) // 显示Yes
    else ShowMessage(no);

    if IsChild(handle, button2.handle) then ShowMessage(yes) // 显示Yes,要研究一下,为什么
    else ShowMessage(no);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    ShowMessage(button2.Parent.Name); // 显示Panel1
end;

 TWinControl.CreateWindowHandle使用了TCreateParams.WndParent作为父窗口的句柄,那么button2的父窗口是什么时候设置的呢?

IsChild API与Delphi里的Parent不是一回事(Windows窗口自己不能是自己的子窗口,但Delphi不一定)

原文:http://www.cnblogs.com/findumars/p/4740839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!