![]() |
1
9
您需要添加一个wm_destroy处理程序,并检查componentstate中的csdestroying,这样它只在实际销毁时捕获,而不是在重新创建句柄时捕获。
这只在框架的窗口句柄实际创建时才有效。没有另一个好的钩子点,所以如果你想确保它总是被调用,你需要在wmdestroy中设置一个标志,如果没有被调用,就返回到析构函数中调用它。 窗口句柄本身在wm_ncDestroy中都被清除,这是在所有子代wm_destroy消息返回后调用的,因此窗体及其所有子代句柄此时仍应有效(忽略在窗体OnDestroy中释放的任何句柄)。 |
![]() |
2
1
听起来更像
无论如何,我只是从一个基祖先继承了我的所有框架和表单,然后表单的onClose调用了组件层次结构中的所有框架。 |
![]() |
3
0
(这只是一个想法,但我现在没有时间来构建概念证明,但我会毫不犹豫地与大家分享。) 如果Windows句柄有问题,您应该检查是否能够附加Windows的事件回调指针,该指针在框架的Windows句柄不再存在时被调用。也许有一个函数 RegisterWaitForSingleObject |
![]() |
4
0
另一种选择是重写
像这样:
|