删除 HWND 对象

Delete an HWND object

本文关键字:对象 HWND 删除      更新时间:2023-10-16

我遇到一种情况,当我收到一条消息时,我必须从hWnd中删除一个窗口。我认为这必须是可能的,因为CreateWindowEx通过返回 HWND 创建一个对象,我必须能够删除一个对象。

注意:hWnd位于其他一些过程中。

正确的方法是将WM_CLOSE消息发送到关联的窗口,或者简单地调用DestroyWindow,它将WM_DESTROY消息发送到窗口。

线程不能使用 DestroyWindow 销毁由其他线程创建的窗口。

WM_CLOSE和WM_DESTROY的区别:

发送WM_CLOSE后,目标应用程序可以在销毁窗口之前提示用户进行确认,方法是处理WM_CLOSE消息并仅在用户确认选择时才调用 DestroyWindow 函数。

换句话说,使用WM_CLOSE关闭窗口可以被拒绝,但它被认为比WM_DESTROY"更安全",因为应用程序可以保存请求确认并保存更改。但是,如果您需要强制关闭,请使用WM_DESTROY。

HWND 结构指针由系统管理,甚至不要尝试删除它们!

如果使用消息,哪个进程拥有窗口并不重要WM_CLOSE。

向窗口发送一条带有SendMessageWM_CLOSE消息。