В цикле ожидать действия юзера

 
0
 
C++
ava
RDC | 28.02.2008, 00:06
Как в цикле ожидать действия юзера?
Например:

       wchar_t NameQue[100];
        AnsiString tmp;
        tmp="C:\\_TMP\\test_1\\";
        for (int i=0; i!=6; i++) {
                tmp=tmp + IntToStr(i) + ".html";
                CppWebBrowser1->Navigate(tmp.WideChar(NameQue,100),0,NULL,NULL,NULL);
                // И вот тут надо цикл остановить что бы дать пользователю
                // возможность почитать и понажимать другие кнопочки.
                // Как только одна из кнопочек нажата, тогда продолжаем цикл.
                tmp="C:\\_TMP\\test_1\\";
        }
Ответы (2)
ava
JackYF | 28.02.2008, 01:17 #
RDC, Application->ProcessMessages();
ava
Bima | 28.02.2008, 07:52 #
Мне кажется, нужно перестраивать саму структуру программы. Это не линейное программирование, как в паскале или бейсике, где все ресурсы системы отданы только вашей программе.

Самым простым решением будет вставка бесконечного цикла с ожиданием флага (при нажатии клавиши), но при этом возможны проблемы с перерисовкой приложения и максимальной загрузкой процессора.
Если для примера взять цикл:

for (int i=0; i!=6; i++) 
   {
    while (!Flag) // флаг нажатия нужной клавиши
         {Application->ProcessMessages();}
    //код цикла
   }

то можно получить максимальную загрузку процессора вплоть до зависания

Такие вещи лучше вставлять в таймер или поток. Самым оптимальным вариантом будет работа по событию, то есть по нажатию клавиши на каком нибудь компоненте или ловить системные события (нажатия клавиш).
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
  JackYF   Bima   RDC
advanced
Отправить