Delphi 7,孩子如何应对父窗体移动?

Delphi 7,孩子如何应对父窗体移动?,delphi,events,delphi-7,Delphi,Events,Delphi 7,我正在编写一个TFrame子体,它可以在运行时托管任何类型的控件。 在其功能中,在特定条件下,它应该显示一种视觉暗淡的“遮罩”。 我将一个单独的TCustomForm子类与AlphaBlend叠加,实现了这种效果, 要使其工作,表单必须没有父项。 因此,我需要一些额外的代码来保持这个窗口锚定到框架的客户区,无论它是被调整大小还是被移动 调整大小没什么大不了的:我可以覆盖TMyFrame的Resize方法 但是搬家呢? 假设框架与主窗体对齐:如果我移动主窗口,其Left和Top值不会改变,因此不会

我正在编写一个
TFrame
子体,它可以在运行时托管任何类型的控件。
在其功能中,在特定条件下,它应该显示一种视觉暗淡的“遮罩”。
我将一个单独的
TCustomForm
子类与
AlphaBlend
叠加,实现了这种效果, 要使其工作,表单必须没有父项。
因此,我需要一些额外的代码来保持这个窗口锚定到框架的客户区,无论它是被调整大小还是被移动

调整大小没什么大不了的:我可以覆盖
TMyFrame
Resize
方法

但是搬家呢?
假设框架与主窗体对齐:如果我移动主窗口,其
Left
Top
值不会改变,因此不会向框架发送
WM\u move
消息。
我需要在
TMyFrame
单元中封装一些东西,以保持它的可重用性

在这种情况下,我还能处理其他信息吗


感谢您

钩住父窗体的
WindowProc
属性,或使用
setWindowsSubClass()
对父窗体的窗口进行子类化,以拦截
WM\u windowposchanging
WM\u WINDOWPOSCHANGED
消息。

在目标窗体中插入一个不可见控件。,唯一的功能是向分离的阴影发送通知。这就是MDI窗口在windows中的工作方式;-)我不确定我是否理解你的建议。目标窗体是框架的父窗体?谢谢你。你呢?那很有趣。我不知道子类化API,我会调查它们。但是您认为我可以在不影响父窗体代码的情况下使用此解决方案吗?我的身体可能是……的孩子。。。。父窗体正在移动,因此我不能依赖于特定的父窗口。或者,更糟糕的是,我必须考虑层次结构中任何父窗口的移动。谢谢。VCL有一个
GetParentForm()
函数来查找父窗体,而不管子窗体的嵌套级别如何。使用
SetWindowSubclass()
比使用
WindowProc
侵入性更小,但两者都可以工作。