Delphi使用SetWindowLong 修改子窗体属性,实现z轴任意覆盖

今天有个朋友问我一个问题,现在Delphi创建的子窗体默认子窗体只能在主窗体上面,不能被主窗体遮挡,问如何才可以使主窗体获得焦点的时候可遮挡子窗体,本来以为很简单的问题,其实还是需要了解一个函数。

SetWindowLong是一个Windows API函数。该函数用来改变指定窗口的属性.函数也将指定的一个32位值设置在窗口的额外存储空间的指定偏移位置。

原型

LONG SetWindowLong(

    HWND hWnd,               // handle to window

    int nIndex,              // offset of value to set

    LONG dwNewLong           // new value

);

nlndex

要设置其他任何值,可以指定下面值之一:

常量

常量值

意义

GWL_EXSTYLE

-20

设定一个新的扩展风格。

GWL_HINSTANCE

-6

设置一个新的应用程序实例句柄。

GWL_ID

-12

设置一个新的窗口标识符

GWL_STYLE

-16

设定一个新的窗口风格。

GWL_USERDATA

-21

设置与窗口有关的32位值。每个窗口均有一个由创建该窗口的应用程序使用的32位值。

GWL_WNDPROC

-4

为窗口设定一个新的处理函数。

GWL_HWNDPARENT

-8

改变子窗口的父窗口,应使用SetParent函数。

 if fCEF <> nil then
  begin
    FreeAndNil(fCEF);
  end;

  fCEF := TfCEF.Create(nil);
  fCEF.Show;

因为子窗体创建出来默认所属主窗体,所以要改变子窗体的父窗口

在子窗体中formcreate函数中使用

 SetWindowLong(Handle, GWL_HWNDPARENT, 0);

即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值