Eli*_*ssa 6 delphi delphi-xe2 vcl-styles
在运行时应用新样式后,我的应用程序的MainForm创建一个新的窗口句柄 - 有没有办法停止此操作或重新分配句柄,因为我得到了一吨以下错误:
'系统错误.代码:1400.窗口句柄无效'
有没有办法操纵强制分配新句柄的过程?
我解决了这个问题:
我的主要表单创建了一个从未显示的看不见的"帮助"表单,但它确实有可视组件 - 它在尝试重绘这些可视组件时抛出了句柄错误,所以我用对象替换了相关组件(注意我最初没有写这段代码).
没有办法避免重新创建窗口句柄.相反,覆盖窗口CreateWnd
和DestroyWnd
方法,以便在重新创建窗口时得到通知.
此外,避免保持对可能被破坏的窗口句柄的持久引用.相反,Handle
每次需要时都要阅读该属性.然后,您将不必注意通知.
但要注意Handle
从不同的线程读取,因为它可能导致窗口与错误的线程关联.将需要与VCL窗口交互的任何代码包装到您通过Synchronize
或调用的方法中Queue
.