Итак, у меня работает несколько окон, и я хотел бы обработать сообщения для всех из них, чтобы они не зависали.До сих пор я пробовал несколько вещей:
1) Превращение в поток (глупо, но я пытался):
auto ProcessThread(
std::vector<HWND> Windows
) -> void
{
for (;;)
{
MSG Msg1 = decltype(Msg1){0x00};
MSG Msg2 = decltype(Msg2){0x00};
GetMessageW(&Msg1, Windows.at(0), 0, 0);
GetMessageW(&Msg2, Windows.at(1), 0, 0);
TranslateMessage(&Msg1);
TranslateMessage(&Msg2);
DispatchMessageW(&Msg1);
DispatchMessageW(&Msg2);
}
return;
}
...
std::vector<HWND> Windows = { lpScreen.m_WindowHandle, lpPopup.m_WindowHandle };
HANDLE hThread = CreateThread(nullptr, 0, reinterpret_cast<LPTHREAD_START_ROUTINE>(ProcessThread),
&Windows, 0, nullptr);
while (WAIT_TIMEOUT == WaitForSingleObject(hThread, 1000)) {}
CloseHandle(hThread);
2) Просто набивать второй цикл сообщений
MSG Msg1 = decltype(Msg1){0x00};
MSG Msg2 = decltype(Msg2){0x00};
while (GetMessageW(&Msg1, Hwnd1, 0, 0) && GetMessageW(&Msg2, Hwnd2, 0, 0))
{
TranslateMessage(&Msg1);
TranslateMessage(&Msg2);
DispatchMessageW(&Msg1);
DispatchMessageW(&Msg2);
}
3) Другие варианты второго
Пока все они сделали мои окна неподвижными и дали мне этот курсор загрузки.
Есть идеи?