|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2009, 22:05 | #1 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
Задержка в программе на gtk
Очень надеюсь найти здесь кого-нть из программистов на gtk+.
Постановка задачи: есть цикл, выполняющие действия, написанный на обычном c. В етот цикл необходимо вставить задержку на 100-200 мксек, но так, чтобы программа отвечала на внешние раздражители. Если поставить в коде usleep или sleep, то программа, пока не выполнит цикл, не откликается на системные вызовы и "повисает". Программу перевожу из Delphi, там ето сделать можно добавив строчку Application.ProcessMessages - тогда во время выполнения sleep программа может ловить клики мышки, клавиатурные движения и прочее... Если не туда постучался, то звыняюсь.. Просто по gtk вобще мало где мануала по данной теме... |
20.12.2009, 22:15 | #2 | |||
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Цитата:
В GTK+ я не силен, но вопрос в корне не ясен, Вы говорите Цитата:
Цитата:
|
|||
20.12.2009, 23:19 | #3 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
|
21.12.2009, 00:14 | #4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
На чистом "русском"
Код:
|
21.12.2009, 00:58 | #5 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
BOBAH13, циклы такого типа тоже не помогают, потому что при зацикливании процедуры, сообщения из вне тоже не обрабатываются.
В общем, я разнёс цикл на три части, причём тело цикла вызывается по таймеру. Ето лучшее, что мог сделать. А вот мысль насчёт потоков - в точку. Зря я с них не начал прогу свою писать.. Но подучить их стоит в будущем. Спасибо |
21.12.2009, 01:37 | #6 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
abr_question, Вы можете вызвать, например:
Код:
Параметр blocking определяет следующее поведение: TRUE - заблокирует приложение до тех пор, пока не произойдет какое либо событие. FALSE - продолжит выполнение приложения, сразу же возвратившись из функции. Есть так же функция Код:
Но как уже выше сказали - потоки рулят. Вызов принудительной обработки событий из длительного вычислительного цикла - костыль |
21.12.2009, 23:54 | #7 | |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Кроссплатформенный анимированный осциллограф (GTK+, Cairo) | oleg kutkov | Qt и кроссплатформенное программирование С/С++ | 15 | 22.10.2015 20:13 |
gtk+glade+c | heart | C++ Builder | 16 | 13.12.2009 17:08 |
обновление в блоге - Кроссплатформенный анимированный осциллограф (GTK+, Cairo) | Pblog | Обсуждение статей | 0 | 16.08.2009 16:00 |
Задержка | JRcoker | Общие вопросы Delphi | 11 | 08.08.2008 00:38 |
Задержка | Syred | Общие вопросы Delphi | 2 | 07.06.2008 08:16 |