Vaiabler Splashscreen



  • Hallo ...

    Ich hoffe ihr könnt mir bei folgende Problematik helfen:

    Ich hätte gerne eine Splashscreen der einen etwas längeren Ladevorgang meiner Anwendung überbrückt und dabei Informationen anzeigt was denn gerade so passiert... (so ala AcrobatReader)...

    hab ich mir gedacht nicht so schwierig und wie folgt versucht zu lösen:

    in winmain gleichmal einen Thread aufmachen der mir ein Dialogfenster erstellt und anzeigt.
    (mit der umständlichen Variante)

    dann endet der Thread in einer Message Loop f. das Dialogfenster...

    da gleich mal die erste Frage:

    Ich wollte eigentlich wie üblich GetMessage verwenden mit der Zusatzabfrage ob ein von mir definiertes ThreadBeenden Flag gesetzt ist.

    Mit setzten des flags wollt ich dann in winmain den Thread beenden - der Splashscreen sollte mit beendigung des Threads verschwinden...

    Ergebnis: Alles super, nur damit der Splashscreen wirklich verschwindet muss man zumindest mit der Maus drüber fahren -> nachher klar solange keine Message an Splashscreen blockiert GetMessage ...

    Gedachte lösung: zuerst flag setzten, dann nachricht an splashscreen schicken...(oder nur nachricht schicken die in der DialogProc dann den Dialog beendet was überhautp ideal wäre)

    ich hab alles versucht, UpdateWindow, DestroyWindow, irgendne Message mit SendMessage 😡 nix ging...der Dialog war unerbittlich... (das WindowHandle war mein erster Gedanke aber scheinbar richtig...einfach der Returnwert der dialogerzeugende Funktion, variable bekommt auch nen gültigen Wert)

    dann hab ich mir gedacht: Dann halt PeekMessage

    Schleife des Splashscreens umgebaut: while (!flag) { peekmessage; translate; dispatch; und sleep (wurgs) }

    und nun zur zweiten Frage:
    Die Ausgabe läuft jetzt so: Splashscreen (supergut), warten.., Programmfenster öffnet sich hinter Splashscreen, splashscreen verschwindet und Programmfenster setzt sich selbst hinter alle anderen Anwendungen (also nur sichtbar wenn alleine unterwegs)... (inaktiv??) WIESO DAS DENN?

    jo da hab ich auch ein wenig herumprobiert: ShowWindow, Activate... SetFocus... 😞 - allerdings vor Start der Messageloop in winmain aufgerufen - aber die werden eh gepuffert oder?

    Meine Wunschlösung wäre Dialog, GetMessage Schleife ohne Flagabfragen oder Sleep und Beendigung des Dialogs mit SendMessage(hDlg, WEG_MIT_DIR, 0, 0) 🕶 warum mag der aber meine Messages nicht? Irgendwelche Ideen?

    vielen Dank

    LG



  • Hast du dir mal bei codeproject oder codeguru fertige Beispiele angeschaut, wie es dort gemacht wird?
    Dem Gefühl nach würde ich außerdem nicht den Splash-Screen in deinen extra Thread packen, sondern eher die Zeitaufwändige Ladeaktion - aber wie gesagt: gefühlsmäßig 😉



  • Vielen Dank für die Links - werd ich mal nachstöbern....

    Die Reihenfolge muss so bleiben... aber selbst wenn ich sie ändern könnte würd ich doch sehr gerne wissen wo mein Denkfehler liegt ...

    LG


Anmelden zum Antworten