Не совсем уверен, как вы будете создавать или уничтожать очереди сообщений. Windows должна создать по одному на поток.
Если вы используете MFC, любой производный класс CWinThread и CWnd имеет очередь сообщений, доступ к которой тривиален (используя PostMessage или PostThreadMessage и макрос ON_COMMAND). Чтобы сделать что-то похожее с Windows API, я думаю, что вам нужно написать собственный насос сообщений, что-то вроде метода запуска CWinApp.
MSG msg;
BOOL bRet;
while( (bRet = GetMessage( &msg, NULL, 0, 0 )) != 0)
{
if (bRet == -1)
{
// handle the error and possibly exit
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
... это пример из документации MSDN. Это то, что вы используете? Что не работает?