Knowledge Base Nr: 00238 messageloop.cpp - http://www.swe-kaiser.de

Win32: Messageloop abarbeiten

  
//einfache messageloop (getmessage blockiert/peekmessage nicht)
MSG msg;

while (::GetMessage(&msg, NULL, 0, 0)) /* die Nachrichtenschleife abarbeiten*/
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}

MSG msg;

while (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) /* die Nachrichtenschleife abarbeiten*/
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}

//messageloop mit timeout
DWORD dwNow = ::GetTickCount();
MSG msg;

while (::GetMessage(&msg, NULL, 0, 0)) /* die Nachrichtenschleife abarbeiten*/
{
::TranslateMessage(&msg);
::DispatchMessage(&msg);

pWnd = FindWindow(pszClass, pszTitle);
if (pWnd)
break;

//timeout?
if (::GetTickCount() - dwNow > nWait)
return -3;

Sleep(10);
}