MessageBox bei Vollbild anzeigen



  • Hab noch ein kleines Problem. Wenn meine Anwendung im Vollbildmodus läuft und zwischendurch eine MessageBox aufpoppt, so bekommt diese zwar den Fokus, ist aber nicht sichtbar. Wie kann ich das erreichen?



  • in dem du die mit SetWindowPos nach vorne setzt ... sollte zumindest gehen 🙂



  • Ganz dumme Frage...
    wie führe ich die auf ne anonyme Messagebox aus?
    Nutz zur Fehlerasugabe folgendes Makro:

    #define ERRORMSG(x,y) MessageBox(NULL, x, y, MB_ICONEXCLAMATION | MB_OK)
    

    Diese wird dann folgendermaßen aufgerufen:

    if(...irgendeinfehler)
    {
    	ERRORMSG("Fehlerbeschreibung","Titel des Fensters");
    	return false;
    }
    


  • Das Problem ist das NULL beim Handle. Dort muss das Handle des übergeordneten Fensters stehen zu dem die MessageBox modal sein soll. Sezt du da NULL ein, gehört sie zu keinem Fenster und verschwindet dann eben im Hintergrund.



  • Hab es beireits so ausprobiert, an den entscheidenden Stellen das Fenster (welches im Vollbildmodus läuft) als parent anzugeben und seperat mit einzelnem messageBox Befehl zu erzeugen. Resultat war allerdings das gleiche. Die Message Box war trotzdem nicht zu sehen.



  • Hm, dachte eigentlich das es sich dabei um nen triviales Problem handelt. Doch langsam bekomm ich das gefühl, das MessageBox bei Vollbildmodus gar net funzt...

    Wirklich niemand der dazu noch ne Idee hat?


  • Mod

    Keine der normalen User und GDI Funktionen geht im Vollbild Modus des DirectX!



  • Hm, also was könnte man da als Lösung Vorschlagen um den Nutzer eine Fehlermeldung mitzuteilen?



  • Guck mal ein paar thread weiter unten da gibt es was über overlays, das könnte was für dich sein.
    Ansonsten geht ja vielleicht Sound (weis es aber nicht) 😃

    schirrmie



  • Naja mir gehts ja darum auszugeben wenn was schiefläuft wie...
    "DirectX konnte das Device nicht anlegen, prüfen sie die Grafikeinstellungen"
    oder
    "Der vertexpuffer konnte nicht angelegt werden da nicht genug Daten übergeben wurden"
    etc



  • Naja wenn es dein eigenes Programm ist dann sollte das doch eigentlich kein Problem sein. Ganz einfach wäre zum Beispiel wenn du alle "Messages", "Warnings" und "Errors" schön sauber aufgelistet in eine Datei schreibst. Die TriBase-Engine (die gehört zu einem relativ bekannten DirectX Buch, vielleicht sagt dir die ja was) hatte für mich ne gute Klasse die das alles Übernommen hatte. Das sah dann so aus

    INFO: TriBase-Engine wird initialisiert... (TriBase.cpp, Zeile 83, Funktion (Unbekannt))
    INFO: Initialisierung komplett! (TriBase.cpp, Zeile 101, Funktion (Unbekannt))
    INFO: Der Konfigurationsdialog wird aufgerufen... (tbConfig.cpp, Zeile 1033, Funktion (Unbekannt))
    INFO: Die Direct3D-Komponente wird initialisiert... (tbDirect3D.cpp, Zeile 172, Funktion (Unbekannt))
    INFO: Erstellen des Fensters... (tbDirect3D.cpp, Zeile 179, Funktion (Unbekannt))
    INFO: Initialisierung von Direct3D... (tbDirect3D.cpp, Zeile 211, Funktion (Unbekannt))
    INFO: Die Initialisierung der Direct3D-Komponente ist abgeschlossen! (tbDirect3D.cpp, Zeile 276, Funktion (Unbekannt))
    INFO: Texturmanager wurde initialisiert! (tbTextureManager.cpp, Zeile 41, Funktion (Unbekannt))
    INFO: Die DirectInput-Komponente wird initialisiert... (tbDirectInput.cpp, Zeile 697, Funktion (Unbekannt))
    INFO: DirectInput-Schnittstelle wird generiert... (tbDirectInput.cpp, Zeile 715, Funktion (Unbekannt))
    INFO: Initialisierung der Maus komplett! (tbDirectInput.cpp, Zeile 669, Funktion (Unbekannt))

    schirrmie



  • Also ist ne eigens von mir geschriebene Engine. In ne datei zu schreiben bringt auch nix, weil nicht ich später das Programm bediene sondern relativ unerfahrene Nutzer. Daher sollte es schon eine sofortige Ausgabe des Fehlers geben.


Anmelden zum Antworten