Форум программистов, компьютерный форум CyberForum.ru

SDL + C++ = Тормозит событие нажатия кнопки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Задача для начинающих. Нахождение дубликатов. http://www.cyberforum.ru/cpp-beginners/thread953698.html
Задача: Напишите программу, которая находит и отображает значения-дубликаты в 10-элементном массиве целочисленных значений (если таковые в нем присутствуют). Код: #include <iostream> #include <cstdlib> using namespace std; int main()
C++ Пустые конструкторы и деструкторы Скажите, есть-ли смысл прописывать пустые конструкторы и деструкторы? C_MainClass() {} ~C_MainClass() {} http://www.cyberforum.ru/cpp-beginners/thread953693.html
c++ доступ к protected свойствам C++
давайте рассмотрим доступ к protected свойствам и методам класса известно что напрямую их вызвать можно только внутри класса наследника, НО если нам вообще не нужен наследник. Просто надо считать или изменить protected свойство. воспользуемся следующим методом имеем 2 класса class abstractObject { public:
Можно ли объявить глобальный константный заполненный std::vector ? C++
Хотелось бы, чтоб был объявлен в глобальном пространстве уже заполненный константный статический вектор пар..
C++ Проверка строкового массива http://www.cyberforum.ru/cpp-beginners/thread953658.html
Добрый день, помогите, пожалуйста, разораться с проверкой условия: Имеем текстовый файл, содержащий следующие данные: "Right 3 1 Left 5 1" Строковый массив значения Right и Left принимает, но проверку проходит корректно только для первого элемента, Right (вывод на экран сообщения "Done!!!"). Не могу понять, почему не проходит проверку для второго элемента. #include "stdafx.h" #include...
C++ Объяснить код создания динамического списка есть функция для создания динамического списка, может кто объяснить как работает цикл "for" в ней class Numbers{ public: int n; Numbers *p;}; Numbers *make(int N) { Numbers *p1, *p2; подробнее

Показать сообщение отдельно
dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461

SDL + C++ = Тормозит событие нажатия кнопки - C++

13.09.2013, 13:12. Просмотров 726. Ответов 6
Метки (Все метки)

С помощью SDL создается поверхность.
При нажатии на нее левой кнопкой мыши должно изменяться название окна программы,
но оно изменяется не после первого нажатия, а после 4 - 6, всегда по разному.
Почему так может быть?

A.h - объявление класса А:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once
#include "SDL.h"
class A{
  public:
      A() : x(0), y(0), w(0), h(0) {}
      A(int xx, int yy, int ww, int hh)
                 : x(xx), y(yy), w(ww), h(hh) {
        o_rect.x = x;
        o_rect.y = y;
        o_rect.w = w;
        o_rect.h = h;
      }  
      virtual ~A() {}
      void buttonEvents();
  protected:
      SDL_Event o_event;      
  private:
      SDL_Rect o_rect;    
      int x, y, w, h;
};
A.cpp - определение класса A:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "A.h"
void A::buttonEvents() {    
    int x = o_event.button.x;
    int y = o_event.button.y;
 
    if(SDL_PollEvent(&o_event))
        if(o_event.type == SDL_MOUSEBUTTONDOWN)
           if(o_event.button.button == SDL_BUTTON_LEFT)
                if((x > o_rect.x) && (x < o_rect.x + o_rect.w) &&
                   (y > o_rect.y) && (y < o_rect.y + o_rect.h))
                    SDL_WM_SetCaption("Test event", NULL);   // Это то самое событие
}
Здесь вызывается метод buttonEvents(), который реагирует на нажатие клавиши:
C++
1
2
3
4
5
6
7
8
9
void C_Scenes::keyEvents() {    
    A o_button(0, 0, 960, 640);   // 960х640 - размеры окна
    int isCicleEnd = 0;
    while(isCicleEnd == 0)
        if(SDL_PollEvent(&o_event)) {
            o_button.buttonEvents();            
            SDL_Flip(screen); // функция обновления экрана, чтобы отобразить изменения
        }
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru