Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как прервать цикл по нажатию кнопки?


Автор: Quadruple 10.3.2005, 19:54
Скажем, есть цикл который выполняется очень долго, а иногда его необходимо прервать по нажатию кнопки. Как это сделать? smile smile

Автор: _hunter 10.3.2005, 20:04
береш глобальную переменную. перед началом цикла обнуляеш ее. в цикле сверяеш с нулем -- если не ноль -- выход. в обработчике нажатия на кнопку устанавливаеш переменную в 1.

P.S.
неплохо бы указать на чем пишеш

Автор: Quadruple 10.3.2005, 20:11
_hunter
Цитата

береш глобальную переменную. перед началом цикла обнуляеш ее. в цикле сверяеш с нулем -- если не ноль -- выход. в обработчике нажатия на кнопку устанавливаеш переменную в 1.

Я так и сделал, но переменная нехочет менятся по нажатию кнопки вовремя выполнения цикла, а после завершения только. Кажется есть какае-то функция для проверки сообщений или что-то в этом духе.

Цитата

неплохо бы указать на чем пишеш

ну вроде ж тут про с++ smile

P.S не winapi
P.P.S C++ Builder

Автор: Quadruple 10.3.2005, 21:25
Все, уже разобрался.

Автор: _hunter 10.3.2005, 22:01
с то оно с, но можно на студии писать, можно на билдере, а можно и на гсс. методы везеде будут разными

Автор: razobralsa_on... 12.3.2005, 15:46
...а вот я не разобрался! пожалуйста небольшой примерчик!

Автор: Guest 13.3.2005, 23:43
razobralsa_on
Код

bool Enable_Process; 

void MyFunction() 
{
 Enable_Process = true;

 while (1) {
  DoSomething();

  Application->ProcessMessages(); // проверяем сообщения
  if(!Enable_Process) break;
 }
}

void OnFormKeyDown(Object *Sender, WORD &Key, TShiftState Shift)
{
 if(Key == VK_ESCAPE) Enable_Process = false;
}

Автор: Quadruple 13.3.2005, 23:44
Блин, залогинится забыл.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)