我遇到这样一种情况:当我接收到一条消息时,我必须通过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消息,就不重要谁拥有窗口。WM_DESTROY
消息。相反,应该调用 DestroyWindow
函数。 - tenfourDestroyWindow()
。这在 DestroyWindow()
文档中已经明确说明。OP 表示,所涉及的 HWND
属于不同的进程。 - Remy Lebeau使用SendMessage
向窗口发送一个WM_CLOSE
消息。