Understanding MsgWaitForMultipleObjects Understanding MsgWaitForMultipleObjects multithreading multithreading

Understanding MsgWaitForMultipleObjects


You are not processing the incoming message of the UI thread, take a look at Raymond's blog (also see here) for a sample.

  while (true) {    switch (MsgWaitForMultipleObjects(1, &h,                         FALSE, INFINITE, QS_ALLINPUT)) {    case WAIT_OBJECT_0:      DoSomethingWith(h); // event has been signalled      break;    case WAIT_OBJECT_0+1:      // we have a message - peek and dispatch it      while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) {        // TODO:  must handle WM_QUIT; see Raymond's blog for details        TranslateMessage(&msg);        DispatchMessage(&msg);      }      break;    default:      return FALSE; // unexpected failure    }  }