Fensterschliessung verhindern



  • Bei normalen Command-Applications hab ich die Funktion wait(), die verhindert, dass nach ausführen das Fenster von alleine schliesst. Es leert den Speicherpuffer und erwartet einen ENTER-Druck, um die Eingabeaufforderung zu schliessen.

    void wait()
    {
        cin.get();
        cin.clear();
        cin.ignore(std::cin.rdbuf()->in_avail());
        cin.get();
    }
    


    Was kann man also tun, dass die Applikation sich nach Ausführen nicht schliesst, aber auf [X]-Druck beendet wird?
    Noch ne Anmerkung: Das Bild "logo.jpg" ist kleiner als die Bildschirmmasse, die ich eingestellt habe. Ausserdem hab ich erst gerade angefangen, SDL zu benutzen, es kann also durchaus sein, dass sonstige Fehler vorhanden sind. Der Compiler gibt allerdings keine Fehlermeldungen heraus.

    #include <iostream>
    #include "SDL.h"
    #include "SDL_image.h"
    
    int main(int argc, char *argv[])
    {
        if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) 
        {
           fprintf(stderr, "SDL konnte nicht initialisiert werden:  %s\n", SDL_GetError());
           exit(1);
         }
    
        atexit(SDL_Quit);
        SDL_Surface *display;
        display = SDL_SetVideoMode( 800, 600, 16, SDL_SWSURFACE );
        if ( display == NULL )
        {
          fprintf(stderr, "Konnte kein Fenster 800x600px oeffnen: %s\n",SDL_GetError());
          exit(1);
    
        SDL_Surface *image;
        image = IMG_Load("logo.jpg");
    
        }
    
    }
    


  • Du bastelst dir eine Nachrichtenschleife, in der du all diese Sachen abfragst(Klick auf x, tastatureingabe, ...)
    siehe dazu auch: http://de.wikibooks.org/wiki/SDL:_Events

    übrigens: der quellcode stellt das jpg nicht dar, sondern lädt es nur. du musst es noch anzeigen lassen.

    /edit: es wird sogar nur geladen, falls die Erstellung der "Display"-Surface fehlgeschlagen ist. Auch nicht der Sinn der Sache.



  • Nexus schrieb:

    Was kann man also tun, dass die Applikation sich nach Ausführen nicht schliesst

    Indem man sie weiter ausführt? f'`8k

    Autocogito

    Bye, TGGC (Das Eine, welches ist.)


Anmelden zum Antworten