Доброго времени суток. Прошу дельного совета по Win32API. Есть оконное приложение, в некоторые моменты из него вызовом CreateProcess открываются второстепенные оконные приложения. Они занимают занимают не всю область десктопа и могут перемещаться. Основное приложение должно ожидать закрытия этого дочернего приложения, но в тоже время отрисовываться при необходимости. Поэтому вариант с WaitForSingleObject не подходит. Подскажите идею по реализации подобного ожидания. Интересует точное определение момента завершения работы, а не опрос состояния с некоторым интервалом. Посмотрел в сторону SetWaitableTimer, но не уверен что это оно. Заранее большое спасибо!
Xerx Тоесть тебе нужно оторвать поток от ожидания ? Тогда используй APC. Первый поток при необходимости какойлибо обработки ставит в очередь потока ждущего в NtWaitForSingleObject апк с помощью NtQueueApcThread, в таком случае ждущий поток не возвратится из сервиса ожидания, но при необходимости обработки(когда первый поток сообщит) выполнит её. Хотя можно это не делоть, просто второй поток создай который будет ждать а первый рисовать.
Мне кажется при использовании ожидания с перерисовкой будут проблемы. Лучше использовать сообщения. Посмотри в сторону PostMessage -> PickMessage, SendMessage -> GetMessage.
Мне просто нужно восстанавливать контекст основного окна. Никаких спец. программных отрисовок не происходит. Сейчас копну в сторону отдельного треда. По результатам отпишусь. Проблема решена. В основном потоке создаю тред, ему передаю hProcess. А он в себе вызывает WaitForSingleObject с INFINITE. А основной поток гоняет PeekMessage и обрабатывает только WM_PAINT через DispatchMessage. Работает. Всем спасибо Сам бы до этого конечно дошел, но сдавать прогу сегодня, а там еще куча работы и котелок не варит... С Наступающим всех! p.s. Католиков с прошедшим!