Оконная процедура должна быть реентерабельной. Разберу вопрос подробно: что такое реентерабельность WndProc, как её нарушить и как этого избежать.
Реентерабельность (reentrancy) — способность функции безопасно выполняться одновременно из нескольких потоков и вложенных вызовов. Оконная процедура WndProc должна быть реентерабельной, потому что:
- Windows может отправить новое сообщение до завершения обработки предыдущего;
- вызовы
SendMessageилиPostMessageвнутриWndProcмогут привести к рекурсивному вызову той же процедуры;