Введение в Simple DirectMedia Layer

       

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



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

  • Для ожидания события воспользуйтесь функцией 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");    }}
    <

    Содержание раздела