|
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 40
|
|
Как сделать "Старт", "Пауза", Стоп"?26.12.2012, 11:11. Показов 19684. Ответов 71
Метки нет (Все метки)
Доброго времени суток,
как сделать так, чтобы при нажатии на кнопку начиналось цикличное действие (рисование например) и продолжалось бы пока не будет нажата другая кнопка. Грубо говоря, как сделать "Старт", "Пауза", Стоп".
0
|
|
| 26.12.2012, 11:11 | |
|
Ответы с готовыми решениями:
71
C++ Threads или как запрограммировать кнопку Старт и Стоп нужно сделать кнопки старт и пауза для движущихся фигур В билдеровском MediaPlayer-е кнопка стоп работает как пауза? |
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||||
| 07.01.2013, 01:38 | ||||||||
|
Нет, представь себе. Я говорю о случае, когда, каждый поток владеет собственным окном, следовательно, оно- неразделяемый ресурс. И я даже знаю что ты сейчас скажешь, ты скажешь: ++++++++++++++++++++++++++++++++++++++++ ++++++++++ ![]() это типа крест на мне... ++++++++++++++++++++++++++++++++++++++++ ++++++++++ Я ставлю ДРУГОЙ вопрос- вернее ты его ставишь, а именно- потоки в билдер реализованы круче, нежели в pthread, а когда я предлагаю пободаться- в кусты сразу. Консоль вполне подойдёт. Нет, конечно можно попытаться меня запутать, так тот чел- отправить не знаю куда где лежит какой-то там проект, можно глубокомысленно изречь: Не хошь не надо. Оставайся со своими четырьмя строчками кода.
0
|
||||||||
|
|
||||||
| 07.01.2013, 02:09 | ||||||
|
Но никто не запрещает юзать что угодно и как угодно при этом - но будет много буков, как я уже сказал. Да собственно спросите ТС какой из предложенных кодов ему больше подходит ... и на этом думаю можно тему закрывать (если нет конечно вопросов по сути)
0
|
||||||
|
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 40
|
||
| 07.01.2013, 15:04 [ТС] | ||
|
Второй реализованный мною способ - это с помощью таймера рисовать на канве средствами Vcl, здесь же слишком большое время исполнения, т.к одной прорисовки предшествует 1000 шагов расчетов (при шаге таймера 1 миллисекунда - это минимум 1 секунда). Вы предлагали также другие способы, но реализовать их не удалось, что подскажете, что выбрать?
0
|
||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||
| 07.01.2013, 18:14 | ||
|
Ну вот, то, о чём я и говорил. Задержка в 1 секунду не допускается, но она есть. Вот и таймер.
Но и мой способ не подойдёт по этой же самой причине. Если его использовать, тогда управляющий поток должен передать управление рисующему потоку, который точно также будет чего-то расчитывать в течении1-ой секунды, а, поскольку он в это время будет владеть окном, та же задержка в управлении и выйдет. Только реализация ещё труднее. Что же делать? Нужен симбиоз решений. Пусть у тебя рисует всё в таймере- у то есть через 100 миллисекунд к примеру. Это нормально. Но все расчёты пуст делаются в ДРУГОМ потоке. Ну то есть как-то так: ---в потоке A нажал старт-> создался параллельный поток B (чисто для расчётов, он окно не занимает)
---Поток A отрисовывает чё надо и посылает сигнал об этом потоку B ---В потоке B делается расчёт и посылается об этом сигнал потоку A; поток B приостанавливает деятельность ---Поток A отрисовывает чё надо и посылает сигнал об этом потоку B И так сколько нам надо раз. Можно сделать, чтобы поток B сделал, к примеру 10 расчётов по 1-ой секунде каждый после чего самоубился. Тогда вся работа займёт примерно 1- секунд- то же самое, что и в твоём варианте с той лишь разницей, что в эти 10 секунд окно тормозить не будет . Можно просто напросто реализовать убиение потока по нажатию кнопки стоп. Я тебе сразу говорил с кандачка эту задачу не решить. Не по теме: А в билдере, как я понял, надо только подумать и синхронизацию прописывать не надо, всё само пропишется. И напоследок ты спросишь- а где тут таймер? Как видишь, обошлись без него. Ведь для чего он нам нужен был? Чтобы циклично выполнялись какие-то действия (перерисовка). Но тут таймером может с успехом служить поток B- всякий раз по окончании расчётов он посылает сигнал об этом потоку A; так что не будем плодить лишние сущности. Щас изобразим. Сразу говорю- кнопки пауза не будет, кроме того. Данные потоку B передаваться не будут. Передача динамически формирующихся данных- это отдельная тема. Вместо этого будет например семафор какой-нибудь (тоже вид данных своего рода), то есть так: поток B расчитал- сбросил флаг поток A отрисовал- установил флаг Считай что флаг это и есть данные
0
|
||
|
|
|||||||
| 07.01.2013, 19:10 | |||||||
|
(о рисование можно найти в любом справочнике по WinApi ( работа GDI ) ) Собственно в коде который я предлагал для потоков можно увидеть как я выставляю толщину пера с помощью VCL Более того в VCL таймер работает адекватно с интервалом ~300 мс ( меньше выставить нельзя- не сработает ). Если это слишком надо то нужно реализовывать таймер на основе WinApi ( что собственно несложно и пример этого есть в одной из книг Архангельского, которые указывал раньше) Я же выкладывал готовый проект... Да и переформулируй задание по конкретнее, а то благодаря некоторым уже и непонятно что именно нужно тебе .... Добавлено через 3 минуты
1
|
|||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|||||||
| 19.01.2013, 16:38 | |||||||
-lpthread -lgdi32
0
|
|||||||
|
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 25
|
|
| 27.11.2016, 21:37 | |
|
Но если не использовать сторонних библиотек, то как можно реализовать старт, паузу и выход из консольной программы?
0
|
|
|
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 25
|
|
| 28.11.2016, 23:34 | |
|
Ну есть же чисто С++ - ные библиотеки как заголовочный файл iostream включён в стандартную библиотеку C++. А вот Boost это как не стандартная библиотека.
Вопрос не по теме, кто-то может знает, что такое log state-переходов и как это оформить в формате .txt
0
|
|
|
0 / 0 / 0
Регистрация: 04.03.2014
Сообщений: 25
|
|
| 29.11.2016, 00:01 | |
|
Я с многопоточностью ещё не знакомилась, не могу сказать)
0
|
|
|
|
||
| 29.11.2016, 00:07 | ||
|
А затем задайте себе вопрос "о чем это я?"
0
|
||
| 29.11.2016, 00:07 | |
|
Одна форма, кнопки старт и стоп. Как остановить? Через интерфейсе (GUI) сделать кнопку стоп, старт, пауза Нужно вместо кнопки старт/ стоп сделать смену цвета круга Как добавить кнопку Старт/Стоп TextureView video-старт/пауза как? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|