Здравствуйте, allco, Вы писали:
A>Неудается корректно завершить Thread,
A>функция WaitForSingleObject(m_pThread->m_hThread, INFINITE), зависает на бесконечное количество времени,
A>при этом трид не дохнет и не выполняется НЕ ПРОИСХОДИТ НИ ЧЕГО (прога просто зависает)
A>Почему это происходит?
A>Как решить проблему?
Понятно почему!
В главном потоке ты обрабатываешь сообщение OnStopThread, взводя флажок и далее ожидая сигнал.
Начиная с этого момента главный поток виснет...
Рабочий поток, увидев флаг, посылает главному потоку сообщение SendMessage(... WM_SETTEXT ...)
pText->SetWindowText(_T("Thread is dead!"));
и ждёт, когда же тот обработает...
А тот не обрабатывает... кукует...
Мораль:
1) Нефиг вообще из рабочего потока ковыряться в окнах.
2) Нефиг в оконном потоке глухо ждать чего-то
3) Если хочешь ждать — делай MsgWaitFor... и прокачивай сообщения, которые к тебе приходят.