PMG

Форумы по созданию игр
Текущее время: 07 дек 2021 19:13

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Использование клавы
СообщениеДобавлено: 02 дек 2008 13:20 
Не в сети
Любитель

Зарегистрирован: 22 апр 2008 16:26
Сообщения: 40
Помогите!!!
Не могу понять :oops:!
При использовании управ. клавиш - все нормально(e.g.F1), а когда использую символьные клавиши - реакция 0 :( .
Куда я только не вставлял функцю обработки клавы ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование клавы
СообщениеДобавлено: 02 дек 2008 16:58 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
По подробнее плиз, и код ...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование клавы
СообщениеДобавлено: 05 дек 2008 13:03 
Не в сети
Любитель

Зарегистрирован: 22 апр 2008 16:26
Сообщения: 40
Подробнее...
Просто необходимость использовать не только функцю
клавиши =)!
По поводу кода - я не блестал оригинальностью...
Основной цикл проги и все установки взят из уроков NeHe, а так же обработка клавиатуры-она идентична урокам (за что я им черезмерно благодарен ! ;) ):
Код:
…      
if (PeekMessage (&msg, m_Wnd.hWnd, 0, 0, PM_REMOVE) != 0)
{
   if (msg.message != WM_QUIT)   
   {
      DispatchMessage (&msg);   
   }
   else                  
   {
      isMessagePumpActive = FALSE;   
   }
}
else                           
{
   if (m_Wnd.bisVisible == FALSE)      
   {
      WaitMessage();               
   }
   else                        
   {
      //По примерам снычала сдесь исользовал функцию обработки клавы – ни какой реакции
      KeyEvents(&m_Wnd);
      DrawGLScene();
      SwapBuffers(m_Wnd.hDC);      
   }
}


Затем я вызывал функцию обработки клавы из самой функции рисования DrawGLScene() – опять управ. клавиши обрабатываются, а остальные – нет.
DrawGLScene():
Код:
...
glRotatef(по X);
glRotatef(по X);
Отрисовка карты высот - использовал код Focus on 3D Terrian
KeyEvents();


Cама функция обработки клавы оригинальностью не блещет:
Код:
void KeyEvents(LPViewPortWnd lpWind)
{
   if (lpWind->keyDown[VK_ESCAPE])
      TerminateApplication(lpWind);
   if (lpWind->keyDown[VK_PRIOR])
   { m_Camera.m_vecEyePos -= m_Camera.m_vecForward*Speed;
   }
   if (lpWind->keyDown[VK_NEXT])
   { m_Camera.m_vecEyePos += m_Camera.m_vecForward*Speed;
   }
   if (lpWind->keyDown[VK_UP])
      fRotX -= 1.5;
   if (lpWind->keyDown[VK_DOWN])
      fRotX += 1.5;
   if (lpWind->keyDown[VK_LEFT])
      fRotY -= 1.5;
   //if (lpWind->keyDown[VK_RIGHT])
   //   fRotY += 1.5;
   //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   if (lpWind->keyDown[‘a’]) – на такой код реакции ни какой
      fRotY += 1.5;

}

Да и в функции обработки событий (опять же по NeHe!) предусмотрено использование символьных клавиш:
Код:


case WM_KEYDOWN:
if ((wParam >= 0) && (wParam <= 255))
{
window->keyDown[wParam] = TRUE;
return 0;
}
break;
case WM_KEYUP:
if ((wParam >= 0) && (wParam <= 255))
{
window->keyDown [wParam] = FALSE;
return 0;
}
break;


[/code]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование клавы
СообщениеДобавлено: 08 дек 2008 09:45 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
У тебя ‘a’ - случайно не в unicode или русское? Используй числовой код.

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование клавы
СообщениеДобавлено: 08 дек 2008 16:02 
Не в сети
Любитель

Зарегистрирован: 22 апр 2008 16:26
Сообщения: 40
Не не русское и не unicode. А числовой код попробуем. Спасибо!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование клавы
СообщениеДобавлено: 08 дек 2008 17:50 
Не в сети
Гуру
Аватара пользователя

Зарегистрирован: 03 авг 2004 10:37
Сообщения: 2694
Может у тебя ‘a’ воспринимается как unicode? Проследи в case WM_KEYDOWN: что нажимается и запомни нужные коды ...

_________________
С уважением, Сергей


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование клавы
СообщениеДобавлено: 10 дек 2008 12:57 
Не в сети
Любитель

Зарегистрирован: 22 апр 2008 16:26
Сообщения: 40
Ну, что тут можно сказать: пути Microsoft не исповедимы! :D
VC++.NET 2005 воспренимает символы как ANSI. Вариант с числовым кодом прошел, спасибо. А VC++ 6 прохавала и символьный вариант...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Использование клавы
СообщениеДобавлено: 12 май 2009 20:06 
Не в сети
Опытный
Аватара пользователя

Зарегистрирован: 04 июл 2008 10:11
Сообщения: 144
Откуда: Питер
если кому надо писать через буквы, а не через код, то правильно писать keyDown['A'] вместо keyDown['a']


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB