Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 删除HWND对象_C++_C_Winapi_Hwnd - Fatal编程技术网

C++ 删除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后,目标应用程序可以在销毁

我有一种情况,当我收到一条消息时,我必须从hWnd删除一个窗口。我认为这必须是可能的,因为
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
消息不会破坏窗口。它只是一个窗口,而不是强制破坏它,而是与另一个进程合作破坏窗口,以便另一个进程可以进行适当的清理。否则,这就像未经允许拆毁别人的房子。