| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > IDropTarget и файлы |
| Автор: Emura 20.1.2011, 02:19 | ||
| всем привет! подскажите пожалуйста со следующим глючком. - кидаем папку из эксплорера в окно (IDropTarget). - обрабатываем файлы из папки(специфика программы). окно эксплорера (откуда бралась папка) подвисает на время обработки. IDropTarget::Drop такого вида. IDropTarget::Drop(...) { извлекаем путь папки PostMessage( путь папки, ...); } из функции IDropTarget::Drop() успешно выходим перед тем как приходит сообщение от PostMessage, т.е. блокировать обработка не должна.. но.. многопоточности нет, XP. всё дело встало, подскажите кто догадается, спасибо тестовый проект
|
| Автор: GremlinProg 20.1.2011, 10:51 |
| поток-то все равно один, поэтому если эксплорер ждет какой-то синхронной с очередью сообщений реакции после Drop, то он и будет висеть, пока WM_MAGIC не вернется можно попробовать 2 варианта: 1. поставить в Drop таймер на несколько мс (чтобы отвязаться от эксплорера), на который, после срабатывания повесить обработку или посылку WM_MAGIC 2. пустить новый или возобновляющийся поток, исполняющий работу WM_MAGIC |
| Автор: Emura 20.1.2011, 12:10 |
| GremlinProg, да уж, думалось что PostMessage спасет, а получается что нет.. по поводу таймера, самому пришла такая идея в голову, да только как-то и так везде использую таймеры.. таймеры, которые уже ассоциируются с костылями... на счет дополнительного потока хз.. для такой "мелочи".. попробую очередной ннннн-ый таймер интересную особенность заметил, если во время блока обработки( в тесте блок WM_MAGIC) выскакивает мессаджбокс(вызываемый алгоритмом обработки), то explorer размораживается.. магия виндовс блин |
| Автор: Emura 20.1.2011, 22:40 |
| GremlinProg, очередной респект! таймер помог. |