Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 479
#1

Изменение цвета кнопки при многократных нажатиях - C++

04.10.2013, 15:38. Просмотров 422. Ответов 8
Метки нет (Все метки)

Есть кнопка. При нажатии на нее она становится красной, при повторном
нажатии она должна становиться зеленой, потом опять красной и т.д.

Но она почему-то один раз становится красной и все, может, кто знает, почему?

C++
1
2
3
4
5
6
7
8
9
10
11
isSoundOn = 0;
for( /* Что-то там */ ) {
     if(isSoundOn == 0) {
          // Кнопка становится красной
          isSoundOn = 1;
     }
     else {
          // Кнопка становится зеленой
          isSoundOn = 0;
     }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2013, 15:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Изменение цвета кнопки при многократных нажатиях (C++):

Изменение цвета текста/фона при консольном выводе - C++
Доброго времени суток. Как изменить цвет фона/текста в консоли с++ в формате RGB? Я знаю, что есть подобная фича в windows.h, но это не...

Изменение цвета текста и фона при консольном выводе - C++
Всем привет. Помогите решить мою проблему. Как менять цвет текста и фона при консольном выводе. Чё-то конкретного примера я не нашёл. Не...

Изменение положения формы при нажатии кнопки - C++
На форме есть кнопка jump. Как сделать так, чтобы при нажатии на неё один раз окно меняло место положение, а при нажатие второй раз...

Почему-то при соответствующих нажатиях клавиш не выдает "Ошибка ввода" и просто закрывает экран консоли - C++
#include "stdafx.h" #include <iostream> #include <stdlib.h> using namespace std; struct AUZ { char *name; double GPU; ...

С++ Builder Циклы с условием (при вводе адреса цвета (например, 0 255 0) выдавать имя цвета) - C++
Help, не могу решить задачку ЛБ: нужно написать программу, при вводе адреса цвета (на пример 0 255 0 выдавал имя цвета). ...

Изменение цвета строки! - C++
доброго времени суток! вот условие задачи: Написать программу “Прыгающий шарик”. После запуска программы на экране должна отображаться...

8
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 484
Записей в блоге: 1
04.10.2013, 15:44 #2
Попробуй так:
C++
1
2
3
4
5
6
7
8
9
if(isSoundOn == 0) {
          // Кнопка становится красной
          isSoundOn = 1;
     }
 else    if(isSoundOn == 1) 
     {
          //кнопка становится зеленой
          isSoundOn = че-то там
      }
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 479
04.10.2013, 15:49  [ТС] #3
Цитата Сообщение от Algoritmer Посмотреть сообщение
else * *if
Пробовал, не работает

Добавлено через 43 секунды
Цитата Сообщение от Algoritmer Посмотреть сообщение
isSoundOn = че-то там
А здесь что имеется ввиду? Условие выхода из цикла?
0
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 484
Записей в блоге: 1
04.10.2013, 16:06 #4
покажи весь обработчик
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 479
04.10.2013, 16:11  [ТС] #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int C_Events::buttonEvents(SDL_Event* o_event_C_Events, int numberOfButton, C_InitSurfaces *p, C_LoadImages *pli) {
    int x = o_event_C_Events -> button.x;
    int y = o_event_C_Events -> button.y;
        
    int isSoundOn = 0;
 
        if(o_event_C_Events -> type == SDL_MOUSEBUTTONDOWN)
           if(o_event_C_Events -> button.button == SDL_BUTTON_LEFT)
                if((x > o_rect_C_Events.x) && (x < o_rect_C_Events.x + o_rect_C_Events.w) &&
                   (y > o_rect_C_Events.y) && (y < o_rect_C_Events.y + o_rect_C_Events.h))
                    switch(numberOfButton) {
                    case 0: // button "play"
                        return 0;
                        break;
                    case 1: // button "sound"
                        if(isSoundOn == 0) {
                                                        // событие 1
                            o_C_Blitting_C_Events.blittingImage(200, 400, pli -> img_soundOn, p -> getScreen());
                            isSoundOn = 1;
                        }
                        else if(isSoundOn == 1){
                                                        // событие 2
                            o_C_Blitting_C_Events.blittingImage(200, 400, pli -> img_soundOff, p -> getScreen());
                            isSoundOn = 0;
                        }
                            SDL_Flip(p -> getScreen());
                        break;
 
...
0
Algoritmer
155 / 95 / 13
Регистрация: 07.03.2013
Сообщений: 484
Записей в блоге: 1
04.10.2013, 16:41 #6
isSoundOn у тебя определяется в 5-й строке как "0". После этого я не вижу, чтоб оно переопределялось. Разумеется будет срабатывать всегда первый if

Добавлено через 1 минуту
Сделай isSoundOn глобальной и инициализируй первый раз где-нибудь за пределами этого обработчика
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 479
04.10.2013, 16:46  [ТС] #7
Цитата Сообщение от Algoritmer Посмотреть сообщение
После этого я не вижу, чтоб оно переопределялось
Переопределяется в 19 и 24 строке

Добавлено через 3 минуты
Цитата Сообщение от Algoritmer Посмотреть сообщение
Сделай isSoundOn глобальной и инициализируй первый раз где-нибудь за пределами этого обработчика
Если сделать глобальной, то работает.
А можно как-то иначе сделать? Без глобальных, в смысле
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
04.10.2013, 16:48 #8
скажи, что она static
1
dimakozyr
158 / 25 / 1
Регистрация: 17.08.2013
Сообщений: 479
04.10.2013, 16:50  [ТС] #9
Цитата Сообщение от novi4ok Посмотреть сообщение
скажи, что она static
оу е, работает, спасибо
0
04.10.2013, 16:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.10.2013, 16:50
Привет! Вот еще темы с ответами:

Изменение цвета шрифта - C++
Есть 5 слов, необходимо вывести их разными цветами. Пробовал system(&quot;color&quot;); и с помощью Handle. Вообще не получилось, так как оно...

Изменение цвета текста - C++
Привет всем. Можно ли в консоле менять цвет ЧАСТИ текста? тоесть выделить одно слово другим цветом например Просто system(color ** )...

Изменение цвета пикселя в opencv - C++
Добрый вечер. Скажите, пожалуйста, есть ли какой-либо метод у opencv, который выполняет преобразование с изображением, делая его более...

Изменение глубины цвета изображения - C++
сам изучаю C#, но в C# нет такой возможности с *.bmp. Мне нужно изменить глубину цвета *.bmp изображения. Возможно вы можете такое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru