Seite 1 von 1
Fragen zum Messagerequester
Verfasst: 19.06.2007 17:50
von Die Null
Hallo ich habe mal 2 Fragen !!!
1.
Code: Alles auswählen
MessageRequester("Achtung","Hallo Welt!",#PB_MessageRequester_Ok)
Kann man die Farbe von "Hallo Welt" in z.b ROT ändern???
2.
Code: Alles auswählen
MessageRequester("Achtung","A",#PB_MessageRequester_Ok)
MessageRequester("Achtung","B",#PB_MessageRequester_Ok)
MessageRequester("Achtung","C",#PB_MessageRequester_Ok)
Kann man es so machen das es A;B;C "abspielt" also alleine jede Sekunde weiter geht!!!
PS: sry , wenn es sowas schon gab , hab nichts gefunden !!!
Verfasst: 19.06.2007 18:35
von ts-soft
Bitte keine Titel ohne jegliche Aussagekraft, beim nächsten mal landet es
dort wo Beiträge ohne vernünftigen Titel hingehören, im Mülleimer.
Danke im voraus
Re: Fragen zum Messagerequester
Verfasst: 19.06.2007 19:45
von PureBasic4.0
Die Null hat geschrieben:Kann man die Farbe von "Hallo Welt" in z.b ROT ändern???
Das geht mit MessageRequestern nicht. Da musst du ein Window dafür verwenden.
Die Null hat geschrieben:Kann man es so machen das es A;B;C "abspielt" also alleine jede Sekunde weiter geht!!!
Bei jedem MessageRequester wird dein Programm solange pausiert, bis der Anwender eine Schaltfläche gedrückt hat. Folglich kannst du auch keine Sekunden zählen lassen.
Verfasst: 19.06.2007 19:50
von ZeHa
Kurz gesagt, auch beim zweiten Problem geht das nur mit Fenstern. Du kannst Dir allerdings eine kleine eigene Funktion basteln, die ein Fenster öffnet und den entsprechenden Text anzeigt, und diese kannst Du dann genauso aufrufen wie einen MessageRequester
Verfasst: 19.06.2007 21:07
von bobobo
aha ich weiß zwar nicht, ob es "erlaubt" ist, aber so ähnlich geht was
Code: Alles auswählen
Global head.s,text.s
Procedure mb()
MessageRequester(head,text,0)
EndProcedure
head.s="aha1"
text.s="uhu1"
tid=CreateThread(@mb(),0)
Delay(1000)
KillThread(tid)
Delay(500)
head.s="aha2"
text.s="uhu2"
tid=CreateThread(@mb(),0)
Delay(1000)
KillThread(tid)
Delay(500)
head.s="aha3"
text.s="uhu3"
tid=CreateThread(@mb(),0)
Delay(1000)
KillThread(tid)
Delay(500)
End
Verfasst: 19.06.2007 21:15
von ts-soft
>> aha ich weiß zwar nicht, ob es "erlaubt" ist, aber so ähnlich geht was
Soweit ich weiß muß ein Messagerequester dem Thread zugeordnet werden,
der das Hauptfenster erzeugt hat, könnte also probleme machen, aber eine
von MS empfohlene Vorgehensweise findet sich hier:
http://www.purebasic.fr/english/viewtop ... 325#187325
Nicht ganz dasselbe, aber durch das Timeout sollte man dem Wunsch auch
nahe kommen

Verfasst: 20.06.2007 12:57
von bobobo
hmm ..
erzeugt lt der
Dokumentation ne Messagebox ohne explizite
Abhängigkeit vom übergeordneten Fenster , oder kann ich nicht lesen?
Verfasst: 20.06.2007 16:38
von ts-soft
Ich vermute mal das es nichts ändert:
Code: Alles auswählen
MessageRequester("", "1")
Debug 1
MessageBox_(0, @"1", 0, 0)
Debug 2
Anwendung läuft in beiden Fällen erst nach Ok weiter, darin sehe ich eine
Abhängigkeit
Verfasst: 20.06.2007 17:26
von AND51
> Anwendung läuft in beiden Fällen erst nach Ok weiter
Ist ja auch logisch, denn wenn ich das Ergebnis des MessageRequesters abfangen will, um die Antwort auszulesen, dann läuft das Programm ja auch nicht weiter un die Variable wird erst später gefüllt oder so.
IMHO ist die Abhändigkeit, die bobobo meint, nur die, dass der MessageRequester nicht das Elternfenster blockiert. Trage ich meine WIndowID ein, wird mein Hauptfenster bis zum Klick auf OK gesperrt (also gedisabled). Trage ich das Handle des Desktops ein, dürfte das Programm zwar auch angehalten, nicht aber der Zugruff auf das hauptfenster der Anwendung gesperrt sein.
Sollte ich falsch liegen, dann nehme ich alles zurück.

Verfasst: 20.06.2007 17:43
von ts-soft
Ich wollte damit sagen, da sich eine Messagebox, ob mit oder ohne hWnd,
direkt auf mein MessageLoop auswirkt, indem der nämlich gestoppt wird.
Wenn sich etwas auf den MessageLoop auswirkt sollte es nicht in anderen
Threads laufen.
Kann natürlich auch falsch liegen, finde aber MessageBoxen in Threads
sowieso völlig daneben
