![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| NovemberDreamer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.9.2008 Репутация: нет Всего: нет |
Делаю в BCB трейнер для игры. Естественно, нужны горячие клавиши. Всё вроде нашёл, сделал, но! Они работают только когда игра находится в оконном режиме, стоит перевести её в полноэкранный и клавиши перестают ловиться. Как бы это исправить?
Вот код:
Это сообщение отредактировал(а) NovemberDreamer - 2.9.2010, 06:49 |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
ловить сообщение WM_KEYDOWN, не забудь при этом в свойствах главной формы сделать, Form1->KeyPreview = true;
P.S. да и не надо при этом регить горячие клавиши, все равно у тебя приложение в приоритетном фокусе ввода. Это сообщение отредактировал(а) Dem_max - 2.9.2010, 10:25 -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| NovemberDreamer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.9.2008 Репутация: нет Всего: нет |
Сделал так:
Но теперь клавиши отлавливаются только если форма в фокусе. Подозреваю, что что-то делаю не так. |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: 1 Всего: 1 |
NovemberDreamer,
Так ты изначально правильно все сделал, если тебе нужно отлавливать нажатие когда вне фокуса твоей формы. Только почему ты проверяешь wParam на 0??
Изначально есть мсдн http://msdn.microsoft.com/en-us/library/ms...9(v=VS.85).aspx |
|||
|
||||
| NovemberDreamer |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.9.2008 Репутация: нет Всего: нет |
0 - это id клавиши, присвоенный ей при регистрации. С того же msdn:
В примере я просто немного сократил:
wParam - это идентификатор клавиши, сгенерировавшей сообщение. Сравнивая их, программа определяет нажатую клавишу. Но если брать последний пример, то как форма узнает какую именно клавишу я нажал, ведь wParam проверяется на соответствие IDHOT_SNAPWINDOW, который, если я правильно понял, равен -1? Это сообщение отредактировал(а) NovemberDreamer - 3.9.2010, 05:59 |
||||
|
|||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Ты же сам говоришь что приложение в полноэкранном режиме,а оно у тебя в фокусе по умолчанию уже. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| NovemberDreamer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.9.2008 Репутация: нет Всего: нет |
Не приложение (трейнер), а игра в полноэкранном режиме. Само приложение должно быть на заднем плане. В том-то и дело, что если игра запущена в окне, то моя программа работает нормально, но когда я переключаю игру в fullscreen, горячие клавиши перестают реагировать и очухиваются только если игру свернуть (естественно, при разворачивании игры они снова молчат).
Это сообщение отредактировал(а) NovemberDreamer - 3.9.2010, 16:44 |
|||
|
||||
| ASMatic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 254 Регистрация: 14.3.2009 Репутация: 1 Всего: 1 |
||||
|
||||
| NovemberDreamer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.9.2008 Репутация: нет Всего: нет |
Ну это-то понятно. Но вот где это указывается? Никак не могу сообразить.
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Примерно так
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| NovemberDreamer |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 1.9.2008 Репутация: нет Всего: нет |
Сделал так, но результат тот же, что и был - работает, пока игра не займёт собой весь экран. Ладно, придётся сворачивать.
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
используй DirectInput раз оно у тебя в FullScreen
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |