The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

[Назад] Содержание [Дальше]

Использование Simple DirectMedia Layer API

События

  • Ожидание событий

Для ожидания события воспользуйтесь функцией SDL_WaitEvent().

Совет:
SDL имеет международную поддержку клавиатуры, трансляцию событий клавиатуры и помещение эквивалента UNICODE в event.key.keysym.unicode. Так как это требует дополнительной обработки, это должно быть разрешено функцией SDL_EnableUNICODE().

 

Пример :


 

{



    SDL_Event event;



 


    SDL_WaitEvent(&event);



 


    

switch
 (event.type) {



        

case
 SDL_KEYDOWN:



            printf("The %s key was pressed!\n",



                   SDL_GetKeyName(event.key.keysym.sym));



            break;



        

case
 SDL_QUIT:



   
         exit(0);



    
}
}

 

  • Опрос событий

Для опроса событий используйте SDL_PollEvent().

Совет:
Вы можете считывать события из очереди без их удаления оттуда, используя параметр SDL_PEEKEVENT в функции SDL_PeepEvents().

 

Пример :


 

{



    SDL_Event event;



 


    

while
 ( SDL_PollEvent(&event) ) {



        

switch
 (event.type) {



            

case
 SDL_MOUSEMOTION:



                printf("Mouse moved by %d,%d to (%d,%d)\n", 



                       event.motion.xrel, event.motion.yrel,



              
         event.motion.x, event.motion.y);



                break;



            

case
 SDL_MOUSEBUTTONDOWN:



                printf("Mouse button %d pressed at (%d,%d)\n",



                       event.button.button, event.button.x, event.button.y);



             
   break;



            

case
 SDL_QUIT:



                exit(0);



        
}
    }
}

 

  • Опрос состояния событий

В дополнение к обработке событий непосредственно, каждый тип события имеет функцию, которая позволяет проверить состояние приложения. Если вы используете только эту функцию, вы должны игнорировать все события от функции SDL_EventState() и периодически вызывать SDL_PumpEvents() для обработки приложением событий.

Совет:
Вы можете скрывать и показывать системный курсор мыши используя SDL_ShowCursor().

 

Пример :


 

{



    SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);


}



 

void
 CheckMouseHover(void)


{



    

int
 mouse_x, mouse_y;



 


    SDL_PumpEvents();



 


    SDL_GetMouseState(&mouse_x, &mouse_y);



    

if
 ( (mouse_x < 32) && (mouse_y < 32) ) {



        printf("Mouse in upper left hand corner!\n");



    
}
}

[ Назад ] Содержание [ Дальше ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру