删除HWND对象

5 c c++ winapi hwnd

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

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

rko*_*egi 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消息,哪个进程拥有窗口并不重要.

  • 你不应该发送`WM_DESTROY`.如果要强制删除窗口对象,请调用`DestroyWindow`. (4认同)