Anzeige:
Seite 2 von 2 ErsteErste 12
Ergebnis 16 bis 19 von 19

Thema: [SDL]Neues Fenster (als Thread gestartet) klaut mir die Tastatur im Hauptprogramm

  1. #16
    Registrierter Benutzer
    Registriert seit
    08.11.2002
    Ort
    Hennef
    Beiträge
    106
    hallo,

    Code:
    #include <stdio.h>
    #include <X11/Xlib.h>
    
    int main() 
    {
    
    Window win;
    Display *disp;
    int ret;
    
    disp = XOpenDisplay(NULL);
    
        while(1) {
    
            XGetInputFocus(disp,&win,&ret);
            printf("Focus bei Window %x\n" ,win);
            sleep(1);
    
        }
    
    return 1;
    }
    das zeigt dir welches Window momentan den focus besitzt.
    (mal was mit dem Mauszeiger rumkurven auf dem Desktop wenn nötig focus durch drücken
    ranholen)
    Wenn du das einbaust in dein Hauptprogramm
    und dam Anfang aufrufst bevor du in den SDL Thread startest
    das Window abfrägst was momentan den Focus besitzt also dein Xterm,Eterm oder was auch immer.
    Dann mit XSetInputFocus den Focus wieder ranholen.
    Window ist ja jetzt bekannt.
    Sollte eigentlich funktionieren.
    Muss man halt mal ausprobieren.
    Find ich natürlich persönlich sch.... diese Methode.
    Die Events abfragen ist sauberer.
    Aber kannst ja mal ausprobieren.

    gruß
    Geändert von pik7 (18-06-2003 um 21:10 Uhr)

  2. #17
    Registrierter Benutzer
    Registriert seit
    24.02.2003
    Beiträge
    43
    und klappts jetzt ? neugierig bin

  3. #18
    Registrierter Benutzer
    Registriert seit
    14.06.2003
    Beiträge
    10

    Thumbs up

    So, erstmal entschuldigt, dass ich mich einige Tage nicht gemeldet habe (ich bin halt neben meiner Diplomarbeit auch noch damit beschäftigt ein Haus zu bauen...).

    @ pulp, jaaaaa, die Sache funktioniert jetzt. Ich hab zwar etwas gebraucht um die Sache mit dem XGetInputFocus und XSetInputFocus zu verstehen, aber nach etwas tüftelei (ich bin halt etwas langsamer) funktioniert die Sache jetzt einwandfrei...

    deshalb an dieser Stelle ein riesiges Dankeschön an alle die mir hier geholfen haben (war ja doch ne schwere Geburt). Insbesonder gilt mein Dank dem zweitletzten Poster pik7

    @pik7 ---> DANKE!!!! Dein Code und Deine Kommentare dazu haben mich auf die richtige Spur gebracht. Ich frage halt jetzt das Fenster ab, das den Focus besitzt bevor ich die SDL-Grafik starte und hole mir den Focus anschließend mit XSetInputFocus zurück.

    Natürlich ist diese Methode nicht so sauber, als wenn ich mit den SDL die Events abfrage. Allerdings soll die Grafik vom restlichen Programm absolut unabhängig laufen, damit man die grafische Oberfläche jederzeit austauschen kann (z. B. für ein anderes Displaysystem). Daher blieb mir nicht anderes übrig.

    So. Nochmal herzlichen Dank und weiterhin ein schönes Wochenende!!!

    stexie

  4. #19
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von stexie

    Natürlich ist diese Methode nicht so sauber, als wenn ich mit den SDL die Events abfrage. Allerdings soll die Grafik vom restlichen Programm absolut unabhängig laufen, damit man die grafische Oberfläche jederzeit austauschen kann (z. B. für ein anderes Displaysystem). Daher blieb mir nicht anderes übrig.
    Liesse sich auch lösen.
    Die Oberfläche muss dann nur ein Interface der Applikation benutzen, um ihr die Events mitzuteilen.

    Gutes Beispiel ist da LICQ, beim dem GUIs Plugins sind.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •