|
0 / 0 / 0
Регистрация: 22.10.2012
Сообщений: 40
|
|
Как сделать "Старт", "Пауза", Стоп"?26.12.2012, 11:11. Показов 19727. Ответов 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,878
|
|||||||||||||||||||||||||||
| 06.01.2013, 00:47 | |||||||||||||||||||||||||||
Сообщение было отмечено как решение
Решениесам то проверял? смесь WinApi и никсов откуда в WinApi pthread_cancel pthread_create........ и кто тебя учил прибивать поток снаружи
дайте мне с таймером на тебе с таймером это не то дай консоль на консоль а где таймер? вот тебе решения на чистом WinApi ( если не тебе так другим пригодится) с таймером ничего не виснет никаких циклов Кликните здесь для просмотра всего текста
без таймера работа в главном цикле никто не ждет никаких сообщений Кликните здесь для просмотра всего текста
поток созданный CreateThread Кликните здесь для просмотра всего текста
поток созданный _beginthreadex Кликните здесь для просмотра всего текста
все работают примерно одинаково, у каждого свои недостатки каждый решает сам для себя каким путем пойдет,в зависимости от задачи сейчас какие будут вопросы?
1
|
|||||||||||||||||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
|||||
| 06.01.2013, 01:48 | |||||
|
++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++
А если убивать не снаружи, то pthread_exit(), если чё. ++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++ А вопрос простой будет TestWinApiTimer.h-то дашь? А то у меня нет...
0
|
|||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,878
|
||||||||||||||||||||||
| 06.01.2013, 02:25 | ||||||||||||||||||||||
|
ежу понятно что это создал волшебник и там лежит ссылка ресурсы ну на возьми TestWinApiTimer.h Кликните здесь для просмотра всего текста
на resource.h Кликните здесь для просмотра всего текста
на еще файл ресурсов Кликните здесь для просмотра всего текста
там еще "stdafx.h" есть выбросил Кликните здесь для просмотра всего текста
иконки тоже скинуть?
0
|
||||||||||||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
||||||||
| 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,878
|
||||
| 06.01.2013, 15:36 | ||||
![]() Я же сказал, у каждого метода свои недостатки тяжеловесы, или чтение с порта в отдельный поток, а рассчитать положение фигурки на экране нафиг не нужен Автомат все за тебя не сделает
0
|
||||
|
|
||
| 06.01.2013, 15:51 | ||
|
boost и pthread тоже обвертки, но для синхронизации с "окнами" как я понимаю там ничего не предусмотрено ( ибо никак оно не связано с окнами ) по этому пришлось бы опять же прибегнуть к WinApi.
0
|
||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,709
|
||||
| 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,709
|
||||||
| 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,709
|
|||||||||||||
| 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,709
|
|||||||||||
| 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,709
|
||||||
| 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-старт/пауза как? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|