Z
Hi,
leider klappt es damit auch nicht. Ich poste mal den relevanten Code-Abschnitt, da gibt's nämlich noch eine PeekMessage-Schleife. Vielleicht hat es irgendetwas damit zu tun:
HANDLE hThread = m_pObserverThread->m_hThread;
CStatic *pWaitBox = new CStatic();
CRect size;
GetClientRect(&size);
size.DeflateRect(int(0.2*size.right), int(0.4*size.bottom));
pWaitBox->Create("Bitte warten, bis die aktuelle Aktion beendet ist...", WS_CHILD | WS_VISIBLE | SS_CENTER, size, this);
pWaitBox->ShowWindow(SW_NORMAL);
pWaitBox->SetWindowPos(&wndTopMost, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
while (::WaitForSingleObject(hThread, 100) == WAIT_TIMEOUT)
{
MSG msg;
while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
{
if (!IsDialogMessage(&msg))
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
}
m_pObserverThread = NULL;
delete pWaitBox;
Es wird also in der Dialog-Klasse (GUI) darauf gewartet, dass ein Thread beendet wird. Währenddessen soll dieses "Bitte warten"-Fenster eingeblendet werden.
Viele Grüße