我有一种情况,当我收到消息时,我必须从hWnd删除一个窗口。我虽然这必须是可能的,因为CreateWindowEx
通过返回HWND创建一个对象,我必须能够删除一个。
注意:hWnd取决于其他一些过程。
答案 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
消息窗口。