Привет, кто знает как на SDL сделать перехавт строки.
Дело в том что я это сделал. Работаю с клавиатурным сканером штрих-кодов, когда сканируются цифры они очень быстро передаются, и я не успеваю получить все цифры. Хотя SDL_Delay у меня равен единице..
мой код
void Input(int size,bool scan=false)
{
SDL_Rect rect;
rect.x=X+Parent->X;rect.y=Y+Parent->Y;
rect.h=15;rect.w=size*10;
SDL_Event event;
text="";
int done=0;
bool isRussian = true;
while(done==0)
{
while(SDL_PollEvent(&event)) //обрабатывать события и записывать в event
{
if(!scan) if(event.type == SDL_QUIT){ done = 1; } //если нажата кнопка закрытия
if(event.type == SDL_KEYDOWN) //если нажата кнопка на клавиатуре
{
int key=event.key.keysym.unicode;
if(true)
{
if((key>='0')&&(key<='9')) text+=(char)event.key.keysym.unicode;
if((key>='A')&&(key<='Z')&&(!isRussian)) text+=(char)event.key.keysym.unicode;
if((key>='a')&&(key<='z')&&(!isRussian)) text+=(char)event.key.keysym.unicode;
if(isRussian)
{
if((key>='A')&&(key<='Z'))text+=toRus(key);
if((key>='a')&&(key<='z'))text+=toRus(key);
if((key=='[')||(key==']')||(key==';')||(key=='\")||(key==',')||(key=='.')||(key=='/'))text+=toRus(key);
if((key=='{')||(key=='}')||(key==':')||(key=='\«')||(key=='<')||(key=='>')||(key=='?'))text+=toRus(key);
}
if(key==' ') text+=(char)event.key.keysym.scancode;
if(event.key.keysym.sym==SDLK_TAB) if(isRussian)isRussian=false;else isRussian=true;
if(event.key.keysym.sym==SDLK_BACKSPACE)
{
if(text.length()>1)text.erase(text.length()-2);
if((text.length()>0)&(text.length()<2))text.erase(text.length()-1);
}
}
//if(scan) text+=(char)event.key.keysym.unicode;
if(event.key.keysym.sym==SDLK_RETURN) done=1;
}
}
if(!scan)
{
SetText(text);
clearR(240,240,240,rect);
Draw();
SDL_Rect dest;
dest.x=X+Parent->X+rect.w; dest.y=Y+Parent->Y; // отрисовка раскладки текста, 25 высота картинки
if(!isRussian) SDL_BlitSurface(SUR_ENG,NULL,screen,&dest);
else SDL_BlitSurface(SUR_RUS,NULL,screen,&dest);
SDL_Flip(screen);
SDL_Delay(1);
}
}
SetText(text);
}
Ответ на:
комментарий
от andreyu
Ответ на:
комментарий
от pozitiffcat
Ответ на:
комментарий
от pozitiffcat
Ответ на:
комментарий
от pozitiffcat
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум [C++][SDL] Глюк с указателем. (2009)
- Форум Ошибка исполнения, corruption of the heap (2010)
- Форум Перехват клавиш XGrabKeyboard. (2016)
- Форум Через g++ компилируется, через gcc не компилируется. (2013)
- Форум BOOST thread не понимаю ... (2011)
- Форум Протоколирование сообщений иксов (2010)
- Форум Илюстрация к вопросу по Xt (2005)
- Форум QComboBox c множественным выбором (2020)
- Галерея Вот такой dwm. (2009)
- Форум SDL, openGL - криво вертится (2011)