2016-03-31 11 views
-2

Ich habe ein Fenster in Allegro, und wenn die X-Taste an der Spitze angeklickt wird, sollte es geschlossen werden. Ich habe den notwendigen Code, damit es funktioniert, aber es wird nicht funktionieren.Allegro5 Fenster wird nicht geschlossen

Um die Anzeige zu initialisieren Ich habe dies:

display = al_create_display(dwidth, dheight); 
    if (!display){ 
     error.message("Fatal Error", "ERROR:", "DISPLAY HAS FAILED TO BE CREATED"); 
    } 

die Ereigniswarteschlange zu initialisieren ich diese:

ALLEGRO_EVENT_QUEUE *event_queue = NULL; 

event_queue = al_create_event_queue(); 
if (!event_queue){ 
    error.message("Fatal Error", "ERROR:", "EVENT QUEUE HAS FAILED TO BE CREATED"); 
} 

al_register_event_source(event_queue, al_get_display_event_source(display)); 

und den Eingang zu reagieren und macht mit oder schließen Sie das Fenster Ich habe dies:

al_start_timer(tick); 
while (true) 
{ 
    //handle input and timer 
    ALLEGRO_EVENT ev; 
    al_wait_for_event(event_queue, &ev); 

    if (ev.type = ALLEGRO_EVENT_TIMER){ 
     redraw = true; 
     //put all fps dependant function here 

    } 
    else if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE){ 
     break; 
    } 

    if (redraw && al_is_event_queue_empty(event_queue)) { 
     //FPS independant functions go here 


     al_flip_display(); 
     al_clear_to_color(al_map_rgb(255, 255, 255)); 
     redraw = false; 
    } 
} 

Antwort

1

ich glaube, Sie brauchen die Linie zu ändern:

else if (ev.type == ALLEGRO_EVENT_KEY_DOWN){ 

zu

else if (ev.type == ALLEGRO_EVENT_DISPLAY_CLOSE){ 
+0

Das war ein Tippfehler, ich habe es von der falschen Datei kopiert. Aber ich schaffte es trotzdem, es zu reparieren, während ich es ändere, also danke, denke ich. –