|
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 40
|
|
Как сделать "Старт", "Пауза", Стоп"?26.12.2012, 11:11. Показов 19657. Ответов 71
Метки нет (Все метки)
Доброго времени суток,
как сделать так, чтобы при нажатии на кнопку начиналось цикличное действие (рисование например) и продолжалось бы пока не будет нажата другая кнопка. Грубо говоря, как сделать "Старт", "Пауза", Стоп".
0
|
|
| 26.12.2012, 11:11 | |
|
Ответы с готовыми решениями:
71
C++ Threads или как запрограммировать кнопку Старт и Стоп нужно сделать кнопки старт и пауза для движущихся фигур В билдеровском MediaPlayer-е кнопка стоп работает как пауза? |
|
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 40
|
||
| 06.01.2013, 00:37 [ТС] | ||
|
0
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
|||||||||||||||||||||||||||
| 06.01.2013, 00:47 | |||||||||||||||||||||||||||
Сообщение было отмечено как решение
Решениесам то проверял? смесь WinApi и никсов откуда в WinApi pthread_cancel pthread_create........ и кто тебя учил прибивать поток снаружи
дайте мне с таймером на тебе с таймером это не то дай консоль на консоль а где таймер? вот тебе решения на чистом WinApi ( если не тебе так другим пригодится) с таймером ничего не виснет никаких циклов Кликните здесь для просмотра всего текста
без таймера работа в главном цикле никто не ждет никаких сообщений Кликните здесь для просмотра всего текста
поток созданный CreateThread Кликните здесь для просмотра всего текста
поток созданный _beginthreadex Кликните здесь для просмотра всего текста
все работают примерно одинаково, у каждого свои недостатки каждый решает сам для себя каким путем пойдет,в зависимости от задачи сейчас какие будут вопросы?
1
|
|||||||||||||||||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|||||
| 06.01.2013, 01:48 | |||||
|
++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++
А если убивать не снаружи, то pthread_exit(), если чё. ++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ А вопрос простой будет TestWinApiTimer.h-то дашь? А то у меня нет...
0
|
|||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||||||||||||||||||||||
| 06.01.2013, 02:25 | ||||||||||||||||||||||
|
ежу понятно что это создал волшебник и там лежит ссылка ресурсы ну на возьми TestWinApiTimer.h Кликните здесь для просмотра всего текста
на resource.h Кликните здесь для просмотра всего текста
на еще файл ресурсов Кликните здесь для просмотра всего текста
там еще "stdafx.h" есть выбросил Кликните здесь для просмотра всего текста
иконки тоже скинуть?
0
|
||||||||||||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||||
| 06.01.2013, 03:33 | ||||||||
|
Добавлено через 57 минут Так, то есть я понимаю так (по первому коду): создаётся таймер, и через каждые 100 миллисекунд он посылает окну сообщения. То есть окно каждые 100 миллисекунд эти сообщения должным образом обрабатывает. В частности, вызывает функцию которая совершает нужные нам действия. (прорисовывает чё нам надо). Что ж, соглашусь, мне такого в голову не приходило. Действительно, один поток. Ты бы на пальцах объяснил мне всё это дело, нормально было бы и не надо было никуда отсылать. Другой разговор был бы совсем. Иметь ввиду такой приём иметь, несомненно, стоит. А теперь по коду: Неважный вопрос: наверное, можно было бы вместо обработки сообщения создать функцию обратного вызова и четвёртым параметром передавать её SetTimer, я бы так и сделал. А теперь тот самый ДРУГОЙ разговор. Смотри.
Так что ты сколько угодно можешь говорить, что: Другие коды не смотрел, но УВЕРЕН, если они однопоточные, дела обстоят точно также. Задержка в потоке означает задержку в программе. А в двупоточной программе этого никогда не будет. Привет.
0
|
||||||||
|
|
||
| 06.01.2013, 14:58 | ||
|
Сами виноваты человек написал вам что у него Builder, а вы ему Dev и WinApi пихаете...я уже не говорю про pthread и консоль...
Добавлено через 3 минуты Как раз Builder куда лучше Dev ... А главное если использовать потоки то не нужно извращаться с WinApi для синхронизации.
1
|
||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,876
|
||||
| 06.01.2013, 15:36 | ||||
![]() Я же сказал, у каждого метода свои недостатки тяжеловесы, или чтение с порта в отдельный поток, а рассчитать положение фигурки на экране нафиг не нужен Автомат все за тебя не сделает
0
|
||||
|
|
||
| 06.01.2013, 15:51 | ||
|
boost и pthread тоже обвертки, но для синхронизации с "окнами" как я понимаю там ничего не предусмотрено ( ибо никак оно не связано с окнами ) по этому пришлось бы опять же прибегнуть к WinApi.
0
|
||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||
| 06.01.2013, 16:03 | ||||
|
Dev-Cpp прост, простота заключается в его минимализме. По умолчанию использует компилятор gcc, компилятор легко (ЛЕГКО изменить); русскоязычный опять же. Есть исходники. Как видишь, мне понадобилось подключить библиотеку pthread- я подключил, всё просто. Хочешь другую библиотеку подключи. Вообще я тебя так понял: Использование WinApi для синхронизации потоков- извращение по определению Использование <чего-то другого, несомненно крутого, билдера там что ли> для синхронизации потоков- это круто потому что это круто Думай что говоришь. +++++++++++++++++++++++++++++++++++++++ Я не использую WinApi для создания потоков по причине которая реально ЕСТЬ. А не потому что это "извращение" Добавлено через 4 минуты Я так-то стараюсь инструменты нормальные подобрать для работы, если чё.
0
|
||||
|
|
||||||
| 06.01.2013, 16:32 | ||||||
Поэтому с тут будет многоБукоВ с мьютексов, семафорами...
0
|
||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||
| 06.01.2013, 18:30 | ||||||
|
Во-первых, то, что оно не разрабатывается, это не плохо и не хорошо, это никак. Чему там разрабатываться? Есть готовый продукт, авторы не намерены вносить изменений, это их дела. Хотят вешают на него примочки, не хотят не вешают. Ещё раз, минимализм- вот свойство Dev-Cpp, кому нравится- пожалуйста. По скачке МОЖНО скачать Dev-Cpp, без компилятора и впихнуть туда свой компилятор, какой захочешь, что я и сделал. По умолчанию с DEv-Cpp идёт версия gcc 3.4.2, это нехорошо, конечно, но более или менее опытный чел обратит на это внимание СРАЗУ. А новичку для "Hello, word" и так сойдёт Не без косяков, конечно, но где их нет? А сырцы Dev-Cpp открыты, (в отличие от других хороших IDE) вот я их правил Предлагаю людям как усовершенствовать IDE Dev-Cpp 4.9.9.2 Вообще я, например, щас изучаю C# но я стараюсь невежества своего не показывать. Если, к примеру там есть какая-нибудь, сущность то я не бегу на форум и не возмущаюсь- как же так, в С++ этого нет и ничего, обходимся. За неудобство в чём-то платим удобством. Одно из достоинств (внимание- термины!) ИЗУЧЕНИЯ pthread (не самой библиотеки, а её изучения)- если вдруг придётся работать с линуксом, с ноля изучать многопоточность не надо будет. Вот двух зайцев я и убил.
0
|
||||||
|
|
|||||||
| 06.01.2013, 19:53 | |||||||
|
Добавлено через 1 минуту
Другое дело boost... Добавлено через 9 минут Добавлено через 1 минуту Но зачем ? Учитывая, то что ТС изначально сказал что у него стоит Builder, совет использовать DEv как то ... Но что тут говорить ? Просто сравните количество написаного когда ...
0
|
|||||||
|
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 40
|
||
| 06.01.2013, 20:03 [ТС] | ||
|
E2209 Unable to open include file 'System.Classes.hpp' также Vcl.Controls.hpp Vcl.StdCtrls.hpp Vcl.Forms.hpp Что посоветуете?
0
|
||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|||||||||||||
| 06.01.2013, 20:54 | |||||||||||||
|
Условная переменная имеет тип pthread_cond_t. "тратить время", "потраченное время", "изврат", "извращение"... Позорище. Вот моё:
44 строчки А у тебя как я понял два файла, TMyThread.cpp и TMyThread.h в одном 64 строчки, в другом 24, 20- строк убираем на комменты ну и что остаётся? А весь остальной код он (создание окон, оконная процедура и прочее) имеет отношение к недостаткам или достоинствам pthread как свинья к апельсинам. Создание окон можно охренительно автоматизировать и то что я этого не делаю, так это ко мне вопросы, почему я этого не делаю. Но при чём тут pthread или Dev-Cpp? Ни при чём.
0
|
|||||||||||||
|
|
||||||||||
| 06.01.2013, 22:07 | ||||||||||
|
И при чем не было необходимости что-то вносить в код окна для синхронизации... Добавлено через 57 секунд
И то что товарисЧ писал про то что поток плохо прибивать снаружи - думаю правда ( хотя не уверен в работе pthread, но думаю он вызывает TerminatedThread() что плохо )
0
|
||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|||||||||||
| 06.01.2013, 22:57 | |||||||||||
|
Ну то есть грубо говоря- потоки работают синхронно без специальных средств синхронизации. Ибо отношение друг у другу имеют небольшое, прямо скажем- один запускается выключается из другого. Всё на этом. Впрочем прикола ради- ты бы показал, что ли, что ты писал руками. Может заценю в натуре брошу всё и перейду на билдер. А щас ты уж поверь на слово, что она в pthread есть. В pthread для корректного завершения потока предусмотрено: асинхронное аннулирование- ну это немедленно (то есть не корректное, а так себе) отсроченное- в потоке, который надо аннулировать, программистом определяются места в коде, где можно сделать аннулирование. Это ты уж сам определяй- ага, аннулировать можно только в этой точке. Наконец, если аннулирование асинхронное, то предусмотрена функция типа деструктора класса, которая перед убиением потока совершает нужные действия. У меня в коде вот она:
Чё ещё придумать для безопасного убиения потока извне, я хз. Наконец, внеси ясность в вопрос- чё, в билдере потоки что ли извне не убиваются?
0
|
|||||||||||
|
|
||||||||||||||||||||||
| 07.01.2013, 00:14 | ||||||||||||||||||||||
|
Так что с базара не съежай...
TMyThread.h
TMyThread.cpp
0
|
||||||||||||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||
| 07.01.2013, 00:40 | ||||||
![]() Ни чего подобного. ТС просил не именно рисование, а цикличное действие, что я и сделал- печать. А рисование было "например", если ты не заметил; ТС-овский код не смотрел ни разу, работал по запросу. А вообще необходимость синхронизации определяется не используемыми функциями, (в частности GDI), а тем, есть или нет у потоков разделяемые ресурсы. Ситуация: один поток рисует в одном окне, а другой владеет другим окном. И всё. Хоть 100 GDI-функций используй. Вся синхронизация будет заключаться в пуске и остановке одного потока из другого. Если уж предъявы кидать мне- у меня и паузы не предусмотрено. Сам пусть лепит, базу дал. Такой вот я. А на слабО меня брать не надо- смогу я синхронизировать или нет потоки если буду использовать GDI. Смогу, хочешь верь, хочешь нет. Просто я с GDI не дружу, если на то пошло. Графику лепил используя OpenGL. Давай я тебе скину проект, как мне кидал ValeryS, ты же не будешь в нём разбираться? Давай по размеру кода TMyThread.h 23 строчки насчитал и ниже портянка не слабая. В общем, заканчиваем холиварить. В веру свою нам друг друга не обратить, я чувствую. Добавлено через 6 минут
0
|
||||||
|
|
|||||||
| 07.01.2013, 01:14 | |||||||
|
Собственно это шаблон класса ... Добавлено через 1 минуту
0
|
|||||||
| 07.01.2013, 01:14 | |
|
Одна форма, кнопки старт и стоп. Как остановить? Через интерфейсе (GUI) сделать кнопку стоп, старт, пауза Нужно вместо кнопки старт/ стоп сделать смену цвета круга Как добавить кнопку Старт/Стоп TextureView video-старт/пауза как? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|