删除HWND对象

时间:2012-09-22 12:17:18

标签: c++ c winapi hwnd

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

注意:hWnd取决于其他一些过程。

2 个答案:

答案 0 :(得分:6)

正确的方法是将WM_CLOSE消息发送到关联窗口,或者只需拨打DestroyWindow即可向窗口发送WM_DESTROY消息。

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

WM_CLOSE和WM_DESTROY之间的区别:

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

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

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

如果使用WM_CLOSE消息,哪个进程拥有窗口无关紧要。

答案 1 :(得分:3)

使用WM_CLOSE发送SendMessage消息窗口。