Здравствуйте Alexche, Вы писали:
A>Жду завершения потока:
A>A>do ;
A>while (!AtlWaitWithMessageLoop( MyThread->m_hThread ));
A>
Если надо просто подождать завершения потока, лучше использовать так:
AtlWaitWithMessageLoop( MyThread->m_hThread )
A>Так вот, если выполняется MessageBox,
A>то AtlWaitWithMessageLoop(...) всегда возвращает 0,
A>хотя поток завершается (смотрел утилитой Process Viewer).
A>Если же до MessageBox дело не доходит, то все работает нормально.
A>В чем тут дело?
AtlWaitWithMessageLoop(...) возвращает FALSE, скорее всего потому, что MyThread->m_hThread не является валидным хендлом на момент проверки. Проиходит это при завершении потока, если CWinThread::m_bAutoDelete выставлен в TRUE (AfxBeginThread так и делает).