Всем привет.
Суть такова: делаю меню настроек управления. Нужно, чтобы при нажатии клавиши в EditBox заносилось её название. Например, нажимаем KEY_CONTROL, а в EditBox заносится CTRL.
Создал класс-наследник от IEventReceiver. Проблема в том, что программа не заходит в событие EET_KEY_INPUT_EVENT.
Вот сам класс:
Code
class COptionsReceiver : public IEventReceiver
{
CGameManager *gameManager;
COptionState *optState;
public:
COptionsReceiver( CGameManager *gm, COptionState *os ):
gameManager( gm ),
optState( os )
{
}
// This is the one method that we have to implement
virtual bool OnEvent( const SEvent &event )
{
// ВОТ СЮДА НЕ ЗАХОДИТ
if (event.EventType == EET_KEY_INPUT_EVENT)
{
std::cout << "EET_KEY_INPUT_EVENT\n";
return true;
}
if (event.EventType == EET_GUI_EVENT)
{
IGUIElement *pCaller = event.GUIEvent.Caller;
s32 id = pCaller->getID();
switch (event.GUIEvent.EventType)
{
case EGET_EDITBOX_CHANGED:
{
IGUIEditBox *editBox = (IGUIEditBox *)pCaller;
if (editBox)
{
SKeyCodes keyCodes;
// подставляем название клавиши
editBox->setText( keyCodes.getKeyName( event.KeyInput.Key ).c_str() );
return true;
}
return false;
}
}
}
return false;
}
};
Если написать editBox->setText( keyCodes.getKeyName( KEY_CONTROL ).c_str() ), всё работает как надо.
Заранее спасибо.