Messagebox automatisch schliessen
-
Hallo und Danke für Eure Antworten...
werde beides mal testen, mal schauen, ob ich das gebacken bekomme, wobei mir das Handle mit dem Timer (hätte ich auch selbst drauf kommen können...
)
besser gefällt, weil CE unter bestimmten Bedingungen eh ausgelastet ist bis an die Grenze, da muss das wirklich recource-schonend sein....
-
Die Vorgehensweise von Martin Richter ist in etwa so von Microsoft dokumentiert (ist zwar Visual Basic, ist aber auf C übertragbar):
http://support.microsoft.com/kb/509631/deWeitere Möglichkeiten:
"Selbst schliessende MessageBox - undokumentierte API-Funktion MessageBoxTimeOut" http://www.michael-puff.de/Artikel/MessageBoxTimeout.shtmlDiverse CodeProject-Artikel auf www.codeproject.com :
"MessageBoxTimeout API"
"XMessageBox - A reverse-engineered MessageBox()"HTH,
Martin
-
Hallo Martin,
interessante Möglichkeit... Mal schauen, wie und ob das auf den CE-Geräten läuft.
Ist schon Klasse, wieeinem hier geholfen wird!
-
Aber sein Programm hat ja kein Fenster.
-
Eine MessageBox erfordert ein Fenster-Handle hwnd. Das dazugehörige Fenster kann aber verborgen bleiben. Für das Schliessen der MessageBox ist in jedem Fall eine Benutzereingabe erforderlich. Will man auch die vermeiden, bleibt nur ein Dialog und eine eigene Dialogprozedur mit einem Timer zum automatischen Schliessen. Ist etwas aufwendig, geht jedoch auch. :p
-
berniebutt schrieb:
Eine MessageBox erfordert ein Fenster-Handle hwnd.
Das ist so nicht ganz richtig!
Die Parameterbeschreibung sagt folgendes.
`hWnd[in] Handle to the owner window of the message box to be created. If this parameter is NULL, the message box has no owner window.`
-
Ich mache solche Anzeigen normalerweise mit einem selbstgeschriebenen Dialogfenster.
Da kann man einfach die Timer-Funktion verwenden um dass Fenster zu schließen.
-
SetTimer aufrufen vor Aufruf der MessageBox dann OnTimer Handler einbauen, MessageBox Fenster suchen (aktueles Top-Level Fenster) und das wars.
-
Ich wäre nicht erfreut, wenn ich eine aufpoppende MessageBox ignoriere, um z. B. in meinem Textprogramm eben das Kapitel zu beenden, und ein anderes Programm mir dieses ungewollt schließt.
-
unreg schrieb:
Ich wäre nicht erfreut, wenn ich eine aufpoppende MessageBox ignoriere, um z. B. in meinem Textprogramm eben das Kapitel zu beenden, und ein anderes Programm mir dieses ungewollt schließt.
Kommt auch drauf an was da drinn steht ;-). Ausserdem ist das auf WinCE daher glaube ich nicht das du da soviel rumtippst :p (Natürlich kann man nur ist das mehr eine Strafe als wirklich produktiv)
-
Hallo zusammen,
jep, das läuft auf einem Navigations-Gerät. Das Mini-Prog. was ich hier habe, schaltet den FM-Transmitter ein/oder aus, ohne dass man sich erst durch die Menüs klicken muss. Da hat man unterwegs nämlich keine Zeit für... Hiermit reicht jetzt ein Klick auf das Display, um den FMT zu togglen.
Ich habe jetzt alles mögliche getestet und habe mich dafür entschieden, in der Exe einen neuen Thread zu öffnen, in dem dann in einer Warteschleife auf die Message gewartet wird und die MessageBox dann nach 3 Sekunden geschlossen wird.
Alle anderen Versuche hatten den Nachteil, dass gerade bei einer Sprachausgabe während der Navigation das Teil so zu ist, dass es für die anderen Lösungen zu eng in der CPU wurde. Es kam dann zu Verzögerungen und Fehlschaltungen. Kann aber auch sein, dass ich das nicht richtig umgesetzt hatte. So jedenfalls wie ichs jetzt habe, läuft es auch wenn gerade eine Sprachausgabe kommt...
Herzlichen Dank für Eure Hilfe und für die vielen Lösungs-Vorschläge!