Сообщения в Windows всегда посылаются окну. И тут я оказался в ситуации, когда сообщение принять надо, а окна нет. Что же делать? Мне посоветовали два метода решения:

1. Использовать PostThreadMessage. Такие сообщения посылаются не окну, а потоку. Проблема: если поток впадёт в какой-либо посторонний цикл обработки сообщений (который не имеет отношение к вашей обработке, например, внутри вызова MessageBox), ваше сообщение будет похерено.
2. Создать невидимое окно и посылать сообщения туда. Как оказалось, разработчики винды предвидели это и создали специальный тип окна "только для сообщений". Для его создания надо при вызове функции CreateWindowEx 4-й параметр с конца (hWndParent) установить в HWND_MESSAGE. Пример: stackoverflow.com/questions/4081334/using-creat...