MsgWaitForMultipleObjects имеет очень мало применений в традиционной многопоточной программе. Он имеет некоторое применение в играх - там, где традиционные не-клиентские элементы фреймов опущены, а API, такие как «MessageBox» и «DoDragDrop», не используются ...
Обычно он находит лучшее применение в потоках "UI worker", которые не размещают видимые окна, но используют очередь сообщений в качестве системы обмена сообщениями между потоками и также должны ждать на дескрипторах ядра.
В вашем случае создание второго потока не представляется возможным. По иронии судьбы, PostThreadMessage + MsgWaitForMultipleObjects, вероятно, будет самым простым способом установить надежный механизм связи между потоком GUI и вашим рабочим потоком «пользовательского интерфейса».