Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560

SDL ошибка на событии обработки нажатия кнопки мыши

22.09.2013, 23:22. Показов 4270. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу третий день разобраться. Использовал функцию SDL для обработки события нажатия левой кнопки мыши,
но как только компилятор доходит до строки с этой функцией (отметил комментарием), программа почему-то "вылетает"

Файл C_Events.h
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
#pragma once
#include "C_LoadImages.h"
#include "C_DrawScene.h"
#include "C_InitSurfaces.h"
#include "SDL.h"
#include <Windows.h>
class C_Events {
  public:     
      C_Events() : x(0), y(0), w(0), h(0) {}
      C_Events(int xParam, int yParam, int wParam, int hParam)
                 : x(xParam), y(yParam), w(wParam), h(hParam) {
        o_rect_C_Events.x = x;
        o_rect_C_Events.y = y;
        o_rect_C_Events.w = w;
        o_rect_C_Events.h = h;
      }
 
    void buttonEvents(SDL_Event*, int);
    void scene_1_events();
    void scene_2_events();
    void scene_3_events();
    void scene_4_events();
  protected:
    SDL_Event o_SDL_Event_C_SceneElements;
  private:
    SDL_Rect o_rect_C_Events;
    int x, y, w, h;
};
Файл C_Events.cpp
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
#include "C_Events.h"
void C_Events::buttonEvents(SDL_Event* o_event_C_Events, int numberOfButton) {
    int x = o_event_C_Events -> button.x;
    int y = o_event_C_Events -> button.y;       
        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"
                        SDL_WM_SetCaption("Play", NULL);                        
                        break;
                    case 1: // button "sound"
                        SDL_WM_SetCaption("Sound", NULL);                       
                        break;
                    case 2: // button "facebook"
                        ShellExecute(NULL, "open", "http://facebook.com",
                                     NULL, NULL, SW_SHOWNORMAL);
                        break;
                    case 3: // button "twitter"
                        ShellExecute(NULL, "open", "http://twitter.com",
                                     NULL, NULL, SW_SHOWNORMAL);
                        break;
                }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.09.2013, 23:22
Ответы с готовыми решениями:

SDL + C++ = Тормозит событие нажатия кнопки
С помощью SDL создается поверхность. При нажатии на нее левой кнопкой мыши должно изменяться название окна программы, но оно изменяется...

Ошибка в событии нажатия кнопки
вот ругается на такую ошибку No overload for 'button2_Click' matches delegate 'System.Windows.RoutedEventHandler' public partial...

Ошибка обработки нажатия кнопки
Привет) Вот смотрите парни, есть форма, при запуске которой запускается сессия, и там накручивается счетчик +1 что типо вошел еще один...

23
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.09.2013, 23:08
Студворк — интернет-сервис помощи студентам
Оказался там ещё один screen (в C_DrawScene) и второй C_LoadImages (в C_DrawScene).
http://rusfolder.com/38148057
1
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
23.09.2013, 23:20  [ТС]
Урааа, заработало. Спасибо, теперь можно наконец-то двигаться дальше

Добавлено через 44 секунды
Все, надо срочно закоммититься в гит
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.09.2013, 23:53
Цитата Сообщение от dimakozyr Посмотреть сообщение
теперь можно наконец-то двигаться дальше
Может наоборот? Вернуться и написать всё заново?
0
 Аватар для dimakozyr
383 / 30 / 3
Регистрация: 17.08.2013
Сообщений: 560
23.09.2013, 23:56  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
Может наоборот? Вернуться и написать всё заново?
Да ну, я и так уже второй раз переписываю
Тем более, я пока что не так уж и много смогу улучшить, нужно подучиться
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.09.2013, 23:56

Имитация нажатия кнопки мыши
пользуюсь mouse_event из user32.dll, но когда я имитирую нажатие лкм в 1 стороннем окне оно работает, а в другом нет public...

Обработка нажатия кнопки мыши
Друзья, начал разбираться с qt, нужна ваша помощь. Хочу обработать нажатие левой кнопки мыши на объект qgraphicsview. Проблема в написании...

Обработка нажатия кнопки мыши
Друзья, нужна ваша помощь. Переопределил virtual void mousePressEvent(QMouseEvent *even); И считываю координаты нажатия. И координаты мне...

По поводу обработки события нажатия кнопки
Здравствуйте! Прошу помощи. Дело в том, что мне надо что бы при нажатии на кнопку она проверяла какая кнопка была нажата до этого, и исходя...

Глобальное считывание нажатия кнопки мыши
Доброго времени суток уважаемые программисты. Подскажите как можно отловить нажатие кнопки мыши (левая, правая) за пределами формы...


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

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

Новые блоги и статьи
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru