gpt4 book ai didi

WPF 互操作 - HwndHost 不会自动销毁托管窗口

转载 作者:行者123 更新时间:2023-12-02 04:12:27 30 4
gpt4 key购买 nike

我无法确保正确销毁托管窗口。

我有一个 HwndHost 派生类,正在 TabControl 中显示(尽管这可能不相关)。我试图在选项卡关闭时销毁托管内容(而不是在包含的窗口关闭时)。

我目前拥有 myControlHost.Dispose() 效果的代码,它确保立即调用 HwndHost.DestroyWindowCore。问题是,DestroyWindowCore 实际上并没有销毁托管的 HWND 内容!

我本以为这足以确保底层 CWnd 派生的应用程序收到 WM_CLOSE 或其他内容,但这似乎并没有发生 - Spy++ 报告仅发送注册消息“HwndSubclass.DetachMessage”。

我了解到您不应该在 DestroyWindowCore 中显式向托管窗口发送 WM_CLOSE,因为这应该自动发生。

手动删除 HwndHost 派生控件时,确保正确销毁托管窗口的正确方法是什么?

最佳答案

根据这个MSDN文档,他们在DestroyWindowCore中调用DestroyWindow(): http://msdn.microsoft.com/en-us/library/ms752055.aspx

DestroyWindow() 会将 WM_CLOSE 消息发布到消息队列中,因此实际上您不需要也不应该直接发送/发布 WM_CLOSE。

在我的应用程序中,实际上我在子 DLL 中调用 DestroyWindow(),该子 DLL 在 DestroyWindowCore 回调中从 C# 端调用。然后,一切工作正常。

关于WPF 互操作 - HwndHost 不会自动销毁托管窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5322618/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com