我在确保托管窗口被正确销毁方面遇到了一些问题。
我有一个派生自HwndHost
的类,我将其显示在TabControl中(虽然这可能与此无关)。我正在尝试在选项卡关闭时销毁托管内容(而不是在包含窗口关闭时)。
我目前的代码大致为myControlHost.Dispose()
,这可以确保立即调用HwndHost.DestroyWindowCore
。问题在于,DestroyWindowCore实际上并没有销毁托管的HWND内容!
我原以为这足以确保基础的CWnd
派生应用程序接收到WM_CLOSE
或其他类似的消息,但似乎并没有发生这种情况——Spy ++仅报告发送了一个名为“HwndSubclass.DetachMessage”的已注册消息。
我读到说,在DestroyWindowCore
中,你不应该显式地向托管窗口发送WM_CLOSE
,因为这应该会自动发生。
在手动删除派生自HwndHost
的控件时,确保托管窗口被正确销毁的正确方法是什么?
DestroyWindowCore()
中调用了DestroyWindow()
,但在找到原始参考文献之前不想更新这篇文章,因为我懒得去找。我怀疑我可能误解了文档,或者文档本身有误(实际上只是代码示例中的注释)。 - Cechner