德尔福XE2,VCL风格重建的窗口句柄(Delphi XE2, vcl styles recreat

2019-08-20 15:08发布

在运行时应用新的样式后,我的应用程序的MainForm中创建一个新的窗口句柄 - 有什么办法来制止这种或重新分配,因为我一收到以下错误的每吨手柄:

'系统错误。 编号:1400无效的窗口句柄”

有没有什么办法来处理这将强制分配新句柄的进程?

我解决了这个执行以下操作:

我的主要形式,创建了永远不会显示一个看不见的“帮手”的形式,但这并具有可视化组件 - 它被扔在它试图重新绘制这些可视化组件的处理错误,所以我替换对象,而不是相关组件(注意我最初没有写这个代码)。

Answer 1:

有没有办法来避免重新创建的窗口句柄。 相反,覆盖你的窗口的CreateWndDestroyWnd方法,使你重新创建一个窗口时通知。

此外,避免保持持久引用到窗口的句柄可能会被破坏。 相反,阅读Handle每次你需要它的时候属性。 然后,你将不必留意通知。

谨防阅读Handle从不同的线程,但是,因为它可能导致窗口成为错误的线程相关。 换行需要与VCL窗口交互到您通过调用一个方法的任何代码SynchronizeQueue



文章来源: Delphi XE2, vcl styles recreating window handle