窗口句柄(HWND)都是由操作系統內核管理的,系統內部有壹個z-order序列,記錄著當前從屏幕底部(假象的從屏幕到眼睛的方向),到屏幕最高層的壹個窗口句柄的排序,這個排序不關註父窗口還是子窗口。
當任意壹個窗口接受到WM_PAINT消息產生重繪,更新區繪制完成以後,就搜索它的前面的壹個窗口,如果此窗口的範圍和更新區有交集,就向這個發送wm_paint消息,周而復始,直到執行到頂層窗口。才算完成。
對於壹個對話框(主窗口來說,其所有子窗口都在他的前面——也就是更靠近眼睛的位置),所以主窗口接受wm_paint繪制完成後,會引起更新區上所有子窗口的重繪(所有子窗口也是從底到外排序的)。
無所謂誰管,每個窗口都是對等的,都有自己的消息相應函數,只不過屬性不同。
邏輯上可以這麽理解,但其實,操作系統是按主窗口排序,然後壹個主窗口的所有子窗口是等級的,它們再壹個排序。所以邏輯上可以說,系統中所有窗口句柄都有個排序。