1. 程式人生 > >手動呼叫DestroyWindow時導致的視窗兩次被銷燬

手動呼叫DestroyWindow時導致的視窗兩次被銷燬

我自己寫了一個函式,裡面呼叫DestroyWindow來銷燬了。

但是WM_CLOSE的響應沒有重寫,所以按下close後,系統又重新送出了DestroyWindow的訊息,所以視窗被銷燬了兩次。從而導致HDC已經被銷燬過。
最後重寫WM_CLOSE解決。
case WM_CLOSE:
{
     PostQuitMessage(0);
     return 0;
}

只讓close響應跳出訊息迴圈,而不銷燬視窗。

所有的原因就是在於WM_CLOSE的響應是自己會呼叫DestroyWindow的。一個視窗顯然不能被Destroy兩次。