父窗口首先收到WM_DESTROY
然后是子窗口。与拥有的窗户相反。拥有的窗口首先收到WM_DESTROY
,然后是所有者。如果我想修改会影响子窗口的内容,我可以在父窗口的WM_DESTROY
中执行,但我无法对拥有的窗口执行相同的操作。在拥有者之前,拥有的窗户将收到WM_DESTROY
。为什么在子窗口和拥有的窗口之间收到WM_DESTROY命令的差异?
回答
的official documentation for DestroyWindow()
否则说:
如果指定的窗口是父母或所有者窗口,
DestroyWindow
当它破坏了父母或所有者窗口自动销毁相关的儿童或拥有的窗口。该函数首先销毁子窗口或拥有的窗口,然后销毁父窗口或所有者窗口。
您是手动发送WM_DESTROY
,而不是拨打DestroyWindow()
?
我没有发送'WM_DESTROY'。我写了一个测试程序,对于子窗口来说,它与文档所说的相反。子窗口收到父母之后的'WM_DESTROY' – Mike32ab
@ Rm32a:Ahh,[this other answer](http://stackoverflow.com/a/3155879/103167)包含密钥:'WM_NCDESTROY'按实际销毁顺序发送,在检查和破坏子窗口之前,会提前发送WM_DESTROY。 –
给出的答案似乎是你的问题的正确答案。如果你发送WM_DESTROY到一个窗口(通过SendMessage,PostMessage或DestroyWindow),操作系统会发送WM_DESTROY和WM_NCDESTROY给它的子节点,如果没有首先发送到子窗口,操作系统会如何知道子窗口需要得到这个消息父母?也许我误解了你的问题。 –
- 1. 滑动窗口和拥塞窗口之间的差异
- 2. TCP - 拥塞窗口和接收窗口之间的区别
- 3. 子窗口和后代窗口之间有什么区别?
- 4. 命令窗口和立即窗口之间的实际区别是什么?
- 5. 是什么这之间的差异,自我,窗口和window.self
- 6. 什么是TrackPopupMenuEx和TrackPopupMenu窗口API之间的差异?
- 7. 弹出窗口和弹出窗口之间有什么区别?
- 8. 差异QML窗口和项目之间的父子关系
- 9. 行与窗口小部件之间的Symfony窗体差异
- 10. wpf中父窗口和子窗口之间的通信
- 11. 如何在html中的两个窗口之间传递参数[父窗口和子窗口之间的值]
- 12. 在父窗口和子窗口之间传递值
- 13. 如何在父窗口和子窗口之间传递值
- 14. 为什么我不能在窗口过程之外获得WM_DESTROY或WM_CLOSE消息?
- 15. 关于窗户拥有者和拥有的窗口
- 16. vim中的差异窗口
- 17. 转换日期窗口和mac之间的差异
- 18. python命令安排12.00h到13.30h之间的时间窗口
- 19. 父窗口和子窗口
- 20. 记录到命令窗口?
- 21. MFC命令窗口命令
- 22. grep命令窗口
- 23. 子窗口中的命令绑定
- 24. 提取窗口的所有子窗口
- 25. 的Java窗口命令
- 26. Visual Studio的命令窗口
- 27. 窗口上的Nifi命令
- 28. 缩小窗口作为窗口收缩
- 29. 两个浏览器窗口之间的通信:弹出窗口和父窗口
- 30. 是什么要求和提供的接口之间的差异
[WM_DESTROY和WM_NCDESTROY的区别是什么?](https://blogs.msdn.microsoft.com/oldnewthing/20050726-00/?p=34803) – IInspectable