If you want to send a closing signal to a window, send a WM_CLOSE. Do not send a WM_QUIT with PostMessage. The WM_QUIT message is not associated with a window and therefore will never be received through a window's window procedure. It is retrieved only by the GetMessage or PeekMessage functions. Use PostQuitMessage.