【发布时间】:2016-07-19 02:59:09
【问题描述】:
对于子窗口,父窗口首先收到WM_DESTROY,然后是子窗口。拥有自有窗户则相反。拥有的窗口首先收到WM_DESTROY,然后是所有者。如果我想修改一些会影响子窗口的东西,我可以在父窗口的WM_DESTROY 中进行,但我不能对拥有的窗口进行相同的操作。拥有的窗口将在拥有者之前收到WM_DESTROY。
【问题讨论】:
对于子窗口,父窗口首先收到WM_DESTROY,然后是子窗口。拥有自有窗户则相反。拥有的窗口首先收到WM_DESTROY,然后是所有者。如果我想修改一些会影响子窗口的东西,我可以在父窗口的WM_DESTROY 中进行,但我不能对拥有的窗口进行相同的操作。拥有的窗口将在拥有者之前收到WM_DESTROY。
【问题讨论】:
official documentation for DestroyWindow() 另有说明:
如果指定的窗口是父窗口或所有者窗口,
DestroyWindow在销毁父窗口或所有者窗口时会自动销毁关联的子窗口或拥有的窗口。该函数首先销毁子窗口或拥有的窗口,然后销毁父窗口或所有者窗口。
您是手动发送WM_DESTROY 而不是拨打DestroyWindow()?
【讨论】:
WM_DESTROY。我写了一个测试程序,对于子窗口,它与文档所说的相反。父窗口后,子窗口收到WM_DESTROY
WM_NCDESTROY 按实际销毁顺序发送,WM_DESTROY 在检查和销毁子窗口之前提前发送。跨度>
WM_DESTROY发送到窗口。 DestroyWindow 发送 WM_DESTROY 和 WM_NCDESTROY 并实际执行销毁。见blogs.msdn.microsoft.com/oldnewthing/20110926-00