سلام!

جلسه ی پیش با event ها در SDL1.2 آشنا شدید. در این جلسه می خواهیم با کمک همین event ها، ببینیم که آیا کاربر دکمه ی بسته شدن پنجره را زده است یا نه.

هر event ای درون خود یک type دارد.

event.type

در این جا نوع event اتفاق افتاده مشخّص می شود. مثلا اگر کاربر اقدام به بستن پنجره کرده باشد، type این event برابر با SDL_QUIT خواهد بود.

if ( event.type == SDL_QUIT )
    closeProgram();

فهرست تمامی مقدار های ممکن برای event.type را می توانید در این جا مشاهده کنید.

تا این جا یاد گرفتید که چه گونه می توان فهمید که کاربر اقدام به بستن پنجره کرده است یا نه. کد نهایی به صورت زیر می شود.

#include "SDL/SDL.h"

#include <iostream>

using namespace std;

void closeProgram(){
    SDL_Quit();
    exit( 0 );
}

int main(){
    
//  initializations
    SDL_Surface *screen = SDL_SetVideoMode( 640, 480, 32, SDL_HWSURFACE );
    if ( screen == NULL )
        cout << "Error with creating window, error is " << SDL_GetError() << endl;
    
    SDL_Event event;
    while ( 1 )
        while ( SDL_PollEvent( &event ) )
            if ( event.type == SDL_QUIT )
                closeProgram();
    
}

این برنامه یک پنجره می سازد و منتظر می ماند تا کاربر پنجره را ببندد.

جلسه ی بعد با انواع دیگر SDL_EventType آشنا می شوید.

موفق باشید!