![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
![]()
Очень надеюсь найти здесь кого-нть из программистов на gtk+.
Постановка задачи: есть цикл, выполняющие действия, написанный на обычном c. В етот цикл необходимо вставить задержку на 100-200 мксек, но так, чтобы программа отвечала на внешние раздражители. Если поставить в коде usleep или sleep, то программа, пока не выполнит цикл, не откликается на системные вызовы и "повисает". Программу перевожу из Delphi, там ето сделать можно добавив строчку Application.ProcessMessages - тогда во время выполнения sleep программа может ловить клики мышки, клавиатурные движения и прочее... Если не туда постучался, то звыняюсь.. Просто по gtk вобще мало где мануала по данной теме... |
![]() |
![]() |
![]() |
#2 | |||
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]() Цитата:
В GTK+ я не силен, но вопрос в корне не ясен, Вы говорите Цитата:
Цитата:
![]() |
|||
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
![]() |
![]() |
![]() |
![]() |
#4 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]()
На чистом "русском"
Код:
![]() |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.01.2008
Сообщений: 32
|
![]()
BOBAH13, циклы такого типа тоже не помогают, потому что при зацикливании процедуры, сообщения из вне тоже не обрабатываются.
В общем, я разнёс цикл на три части, причём тело цикла вызывается по таймеру. Ето лучшее, что мог сделать. А вот мысль насчёт потоков - в точку. Зря я с них не начал прогу свою писать.. Но подучить их стоит в будущем. Спасибо ![]() |
![]() |
![]() |
![]() |
#6 |
Unix C++ developer
Форумчанин
Регистрация: 16.04.2007
Сообщений: 651
|
![]()
abr_question, Вы можете вызвать, например:
Код:
Параметр blocking определяет следующее поведение: TRUE - заблокирует приложение до тех пор, пока не произойдет какое либо событие. FALSE - продолжит выполнение приложения, сразу же возвратившись из функции. Есть так же функция Код:
Но как уже выше сказали - потоки рулят. Вызов принудительной обработки событий из длительного вычислительного цикла - костыль ![]() |
![]() |
![]() |
![]() |
#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 |