C++ 删除HWND对象
我有一种情况,当我收到一条消息时,我必须从hWnd删除一个窗口。我认为这必须是可能的,因为C++ 删除HWND对象,c++,c,winapi,hwnd,C++,C,Winapi,Hwnd,我有一种情况,当我收到一条消息时,我必须从hWnd删除一个窗口。我认为这必须是可能的,因为CreateWindowEx通过返回HWND创建对象,我必须能够删除一个 注意:hWnd取决于其他进程。使用SendMessage向窗口发送一条WM\u CLOSE消息。正确的方法是将消息发送到相关窗口,或者只需调用将消息发送到窗口的消息 线程不能使用DestroyWindow销毁由其他线程创建的窗口 WM\u CLOSE和WM\u DESTROY之间的区别: 发送WM_CLOSE后,目标应用程序可以在销毁
CreateWindowEx
通过返回HWND创建对象,我必须能够删除一个
注意:hWnd取决于其他进程。使用
SendMessage
向窗口发送一条WM\u CLOSE
消息。正确的方法是将消息发送到相关窗口,或者只需调用将消息发送到窗口的消息
线程不能使用DestroyWindow销毁由其他线程创建的窗口
WM\u CLOSE和WM\u DESTROY之间的区别:
发送WM_CLOSE后,目标应用程序可以在销毁窗口之前,通过处理WM_CLOSE消息并仅在用户确认选择后调用DestroyWindow函数,提示用户进行确认
换句话说,可以拒绝使用WM_CLOSE关闭窗口,但它被认为比WM_DESTROY更“安全”,因为应用程序可以保存请求确认和保存更改。
但是,如果需要强制关闭,请使用WM_DESTROY
HWND结构指针由系统管理,甚至不要尝试删除它们
如果使用WM\U CLOSE消息,则哪个进程拥有窗口无关紧要。如果hWnd来自不同的进程,同一个进程可以工作吗?您不应该发送
WM\U DISTRY
。如果要强制删除窗口对象,请调用DestroyWindow
。-1只有创建窗口的线程才能对其调用DestroyWindow()
。这在DestroyWindow()
文档中有明确说明。OP声明所讨论的HWND
属于不同的进程。发送WM_DESTROY
消息不会破坏窗口。它只是一个窗口,而不是强制破坏它,而是与另一个进程合作破坏窗口,以便另一个进程可以进行适当的清理。否则,这就像未经允许拆毁别人的房子。