Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2009, 16:26   #1
kaizer
 
Регистрация: 01.12.2009
Сообщений: 3
Смущение Управление клавиатурой

Кто знает, можно ли в OpenGL управлять объектом не одной зажатой кнопкой, а двумя?
Например, зажимаю 'x' и нажатием кнопки KEY_UP перемещаю объект по оси х вверх.

не пашет:

void KeyboardKeys(unsigned char key, int x, int y)
{
if(key =='x' && key =='\100') xTran+=5.0f;
}
kaizer вне форума Ответить с цитированием
Старый 08.12.2009, 16:50   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
procedure Tpgl.WMKeyDown(var msg: TWMKeyDown);
begin
 inherited; 
 if (msg.CharCode= ord('X')) then shift:= true;      // if зажат X-
 
 if (sh) and (msg.CharCode= 38) then ;
end;

procedure Tpgl.WMKeyUp(var msg: TWMKeyUp);
begin
 inherited;
 if msg.CharCode= ord('X') then sh:= false;  // отжали X-
end;
или обрабатывать в одном событии KeyboardKeys - getkeystate
Код:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 If ((GetKeyState(ord('X')) AND 128)=128) and
      ((GetKeyState(38) AND 128)=128) then messagebox(0, '', '', 0)
end;
смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 08.12.2009, 19:53   #3
kaizer
 
Регистрация: 01.12.2009
Сообщений: 3
По умолчанию

Я с Дельфи трохе не дружу, я на C++ пишу используя OpenGL. Суть моей проблемы: у меня слишком много событий и чтобы управлять было удобно пользователь нажимает на кнопку и не отпуская нажимет на стрелки(вверх увеличивая, вниз уменьшая значение переменной). В Windows же можно две кнопки одновременно нажимать, а три нет, а 11 тем более

в OpenGL есть функция void KeyboardKeys(unsigned char key, int x, int y)

с одной кнопкой работает: if(key =='x') xRot -= 5.0f;

а вот как с одновременно двумя???
if(key =='x' && key == 'y') или if(key =='x' && 'y) - не катит

Ксати, кто нибудь знает как программно управлять кнопками key_up key_down?
kaizer вне форума Ответить с цитированием
Старый 10.12.2009, 18:40   #4
kaizer
 
Регистрация: 01.12.2009
Сообщений: 3
По умолчанию

тема закрыта
kaizer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с клавиатурой. Вадим Буренков Компьютерное железо 22 01.05.2023 21:17
Работа с клавиатурой АлексейМк Общие вопросы C/C++ 1 05.08.2009 01:27
Проблемы с клавиатурой!!! stalker-91 Компьютерное железо 19 29.07.2008 11:08
обновление в блоге - Управление клавиатурой Pblog Обсуждение статей 0 27.05.2007 03:17