求助请教设为子窗口后高级表格Tab键失效
功能说明:该程序是一个用于在易语言中动态将独立窗口(弹出式窗口)转换为指定父窗口的子窗口的工具模块。其核心功能由“置父窗口_”子程序实现,主要完成三步操作:1)调用Windows API SetParent 将子窗口绑定到指定父窗口句柄,使其成为真正的子窗口;2)通过 GetWindowLong 和 SetWindowLong 修改窗口样式,移除 #WS_POPUP 样式并添加 #WS_CHILD 样式,确保窗口符合子窗口规范(即受限于父窗口客户区、不脱离父窗层级、支持正确Z序管理);3)可选地调用 GetWindowRect 和 MoveWindow 对子窗口进行精确定位与尺寸调整(支持空参数智能保留原大小)。程序还包含实际应用示例:在“窗口2”的按钮单击事件中,主动将其设为“窗口1”的子窗口,并在启动时自动载入窗口2为窗口1的子窗体。整个设计解决了易语言原生“置父窗口()”方法可能引发的焦点丢失、TAB键导航失效等常见问题,通过底层API控制确保窗口嵌套行为符合Windows子窗口模型。因此,本程序本质是一个轻量级、高兼容性的窗口嵌套管理工具,适用于需要实现多窗体集成、插件式界面、浮动面板嵌入主窗体等场景的桌面应用程序开发。
======功能程序集
| |
| |------ 置父窗口_
| |
| |------ _启动子程序
| |
| |
======窗口程序集_窗口2
| |
| |------ _按钮1_被单击
| |
| |
======调用的Dll
| |
| |---[dll]------ GetWindowRect
| |
| |---[dll]------ MoveWindow
| |
| |---[dll]------ SetParent
| |
| |---[dll]------ SetWindowLong
| |
| |---[dll]------ GetWindowLong
======功能程序集
| |
| |------ 置父窗口_
| |
| |------ _启动子程序
| |
| |
======窗口程序集_窗口2
| |
| |------ _按钮1_被单击
| |
| |------ _高级表格1_按下某键
| |
| |
======调用的Dll
| |
| |---[dll]------ GetWindowRect
| |
| |---[dll]------ MoveWindow
| |
| |---[dll]------ SetParent
| |
| |---[dll]------ SetWindowLong
| |
| |---[dll]------ GetWindowLong
======功能程序集
| |
| |------ 置父窗口_
| |
| |------ _启动子程序
| |
| |
======窗口程序集_窗口2
| |
| |------ _按钮1_被单击
| |
| |------ 子程序1
| |
| |
======调用的Dll
| |
| |---[dll]------ GetWindowRect
| |
| |---[dll]------ MoveWindow
| |
| |---[dll]------ SetParent
| |
| |---[dll]------ SetWindowLong
| |
| |---[dll]------ GetWindowLong
| |
| |---[dll]------ 呼叫窗口函数地址_
| |
| |---[dll]------ 设置窗口信息_
======功能程序集
| |
| |------ 置父窗口_
| |
| |------ _启动子程序
| |
| |
======窗口程序集_窗口2
| |
| |------ _按钮1_被单击
| |
| |
======调用的Dll
| |
| |---[dll]------ GetWindowRect
| |
| |---[dll]------ MoveWindow
| |
| |---[dll]------ SetParent
| |
| |---[dll]------ SetWindowLong
| |
| |---[dll]------ GetWindowLong
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。