Друзья! Пожалуйста, помогите с такой проблемой: при запуске, трудной задчи, происходит как бы подвисание окна, т.е. процесс обработки поставленной задачи продолжается, но окно, в котором это все выполняется, перестает практически отвечать на запросы, так, например, оно не перерисовывается, не сворачивается, не закрывается, вообщем создается впечатление зависшей программы. Пробовал вынести обработку задачи в модальное окно, то же не помогает — основное окно практически так же себя ведет. Наверняка многие видели, как при работе в какой-то программе имеется возможность прекратить работу (т.е. нажать кнопку Отмена). Меня интересует, как это делается, каким образом достигается возможность работы программы, с возможность её прекращения.
Спасибо за внимание!
Здравствуйте, Unix, Вы писали:
U>Друзья! Пожалуйста, помогите с такой проблемой: при запуске, трудной задчи, происходит как бы подвисание окна, т.е. процесс обработки поставленной задачи продолжается, но окно, в котором это все выполняется, перестает практически отвечать на запросы, так, например, оно не перерисовывается, не сворачивается, не закрывается, вообщем создается впечатление зависшей программы. Пробовал вынести обработку задачи в модальное окно, то же не помогает — основное окно практически так же себя ведет. Наверняка многие видели, как при работе в какой-то программе имеется возможность прекратить работу (т.е. нажать кнопку Отмена). Меня интересует, как это делается, каким образом достигается возможность работы программы, с возможность её прекращения.
U>Спасибо за внимание!
Потоки юзать надо!
Если коротко, то создаешь функцию, в которой и будет выполнятся твоя "трудная" задача. Далее запускаешь поток, и в кач-ве функции потока указываешь ей твою функцию. Вызовами CWinThread::SuspendThread и CWinThread::ResumeThread регулируешь выполнение задачи.
Подробнее читай у Рихтера(правда там без MFC, но зато поймешь как реализовывается многопоточность) или в MSDN'ке.
-------Posted by Stronich-------
<< RSDN@Home 1.1.4 beta 6a rev. 436>>
Здравствуйте, Stronich, Вы писали:
Можно еще внутри этой самой сложной задачи иногда проверять очередь сообщений
для главного окна.
... << RSDN@Home 1.1.4 beta 3 rev. 207>>