|
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 10
|
|
Сообщение WM_KEYDOWN и таймер15.03.2015, 17:01. Показов 2080. Ответов 21
Метки нет (Все метки)
Доброго времени суток, пишу тетрис и возникла проблема, после включения таймера не обрабатываются сообщения WM_KEYDOWN, вообще ничего не происходит при нажатии клавиш, даже если выключить таймер. До включения все работает правильно. Поиск по интернету ничем не помог, может есть какие-то особенности которые я упустил или ошибка скорей всего в коде? Заранее спасибо за ответ.
Добавлено через 11 минут Up, дело не в таймере, а в нажатии кнопки на окне. После сообщения WM_COMMAND не обрабатываются WM_KEYDOWN, но почему так, не понимаю.
0
|
|
| 15.03.2015, 17:01 | |
|
Ответы с готовыми решениями:
21
WM_KEYDOWN WM_KEYDOWN Таймер на сообщение!!! |
|
Заблокирован
|
|
| 15.03.2015, 17:47 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 10
|
||||||
| 15.03.2015, 22:53 [ТС] | ||||||
Вроде везде хватает break...
0
|
||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,869
|
||||||||
| 16.03.2015, 08:14 | ||||||||
|
то все равно идет выброс из ветки и return 0; система не отрабатывает другие WM_COMMAND попробуй так
0
|
||||||||
|
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 10
|
|
| 17.03.2015, 01:24 [ТС] | |
|
К сожалению не помогло...
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,869
|
||
| 17.03.2015, 07:02 | ||
|
ну и заодно object что это за метод new_obj()???? он статический?
0
|
||
|
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 10
|
||||||||||||||||
| 17.03.2015, 21:07 [ТС] | ||||||||||||||||
new_obj() создает новый кубик когда предыдущий доходит до нижних кубиков Нет, не статический
0
|
||||||||||||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,869
|
|
| 17.03.2015, 21:52 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 10
|
|
| 18.03.2015, 00:38 [ТС] | |
|
Когда кубик доходит до низа, создается новый кубик, т.е. вызывается функция new_obj()
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,869
|
|
| 18.03.2015, 06:17 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 10
|
|
| 18.03.2015, 18:19 [ТС] | |
|
Вызываем функцию new_object() класса object через указатель на объект класса object, *game_obj
Думаю названия не совсем удачно выбрал, выходит запутанно
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,869
|
|
| 18.03.2015, 18:51 | |
|
0
|
|
|
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
|
||
| 18.03.2015, 19:11 | ||
|
Вот ещё такое есть:
0
|
||
|
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 10
|
||||||||||||||||
| 18.03.2015, 19:38 [ТС] | ||||||||||||||||
|
Ну сути не меняет, но да, object:: лишнее
Стили текста и кисти удаляю после каждого использования, проблема с этим была, но она влияла только на отображения цветов, а так все работало как надо, кроме нажатия на клавиши
0
|
||||||||||||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,869
|
|||||||
| 18.03.2015, 20:27 | |||||||
|
если не будешь выбирать кисть по умолчанию DeleteObject(hBrush); просто не сработает, кисть выбрана и получишь утечку ресурсов когда GDI ресурсов много программа виснет вот так нужно
чтобы увидеть утечку GDI ресурсов, открой диспетчер задач, войди на вкладку процессы , в меню "вид"- "выбрать столбцы" там выбери "объекты GDI" и посмотри как они утекают в твоей программе
0
|
|||||||
|
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 10
|
||||||
| 19.03.2015, 17:41 [ТС] | ||||||
А решение ошибки нашел случайно, после нажатия клавиши окно оставалось поверх других окон, но было вне фокуса, и нажатие мыши на окно почему-то не брало окно в фокус. Но добавил после WM_COMMAND SetFocus и все работает. Спасибо за помощь, буду разбираться с утечкой
0
|
||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,869
|
||||||||
| 19.03.2015, 18:04 | ||||||||
|
может явно привести нужно я давно на WinApi не писал
нашел ![]()
0
|
||||||||
|
0 / 0 / 0
Регистрация: 12.03.2015
Сообщений: 10
|
|
| 19.03.2015, 18:27 [ТС] | |
|
1>d:\projects\1\tetris\tetris\tetris.cpp (184): error C2440: 'initializing' : cannot convert from 'HGDIOBJ' to 'HBRUSH'
1> Conversion from 'void*' to pointer to non-'void' requires an explicit cast Сама функция делает присваивание выбранной кисти в hBrush, так что сохранить текущую так не выйдет. Но утечку убрал, создавало много шрифтов, сделал глобальным переменную где шрифт храниться и вместо создания каждый раз новой кисти черного цвета, использовал стандартную черную, теперь все нормально работает. Не знал о таких свойствах диспетчера, очень помогает
0
|
|
| 19.03.2015, 18:27 | |
|
Помогаю со студенческими работами здесь
20
Не работает WM_KEYDOWN Не работает WM_KEYDOWN Не отвечает на wm_keydown Не работает WM_KEYDOWN WM_KEYUP и WM_KEYDOWN Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|