Ian*_*dby 7 windows delphi delphi-xe2
一个特定的VCL应用程序崩溃,很少,显然是自发的,我强烈怀疑这是因为主窗体的窗口句柄正在重新创建,以响应操作系统的一些外部触发器.
我确实知道,如果主窗体的窗口句柄要改变,那么肯定会出现麻烦(因为后台线程将消息发布到此句柄).
但我想知道如何在我开始修改代码之前重现这个bug,如果只是这样我可以确认这是崩溃的原因,症状与报告的那些匹配,并且代码变化确实解决了它.(如果操作系统无法触发呼叫,TCustomForm.RecreateWnd我需要找到崩溃的其他解释.是的,我可以发布CM_RECREATEWND到主表单,但这只是问题.)
(我知道将消息从后台线程发布到VCL线程的正确方法是创建一个纯粹用于此目的的隐藏消息窗口AllocateHWnd- 这是我提出的修复方法.)
我已经看到了一个类似的错误,通过将桌面样式从Windows XP更改为Windows Classic来触发TCustomListView其中的后代.但我还没有找到这样的方法来触发a .(我花了相当多的时间阅读VCL代码,但我必须遗漏一些东西.)RecreateWndRecreateWndTCustomForm
摘要:
在从操作系统是什么刺激并VCL的最终调用RecreateWnd一个TCustomForm?(如果这有所不同,我对Windows 7特别感兴趣.)
如果操作系统有这样的刺激,我可以证明它是否会导致观察到的症状.如果肯定没有,那么我可以证明窗口娱乐不是原因.
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |