Обнаружил, что если в основоном цикле окна делать GetMessage(&msg, hWnd, 0, 0), то после закрытия окна оконная процедура получает WM_DESTROY, окно удаляется, всё в порядке. Но GetMessage начинает возвращать -1 (GetLastError = 1400 — Неверный хендл окна).
Если вызывать GetMessage(&msg, NULL, 0, 0), то всё ok.
Как это объяснить?