Seite 1 von 1

OpenNetworkConnection & OpenWindow

Verfasst: 06.06.2006 20:56
von EDI
Hallo alle zusammen,

wenn ich den u.g. Code anwende, verschwindet bei einen zu langen Connect im Fenster das Wort " Bitte warten..." Wie kann ich das verhindern ?

Code: Alles auswählen

Global FontID1
FontID1 = LoadFont(2, "Arial", 12, #PB_Font_Bold)
 If OpenWindow(2, 390, 255, 217, 46, "",  #PB_Window_WindowCentered)
    If CreateGadgetList(WindowID(2))
      TextGadget(2, 10, 15, 200, 20, "Bitte warten...", #PB_Text_Center)
      SetGadgetFont(2, FontID1)
        EndIf
  EndIf
If (OpenNetworkConnection("www.google.de",80))<>0 
MessageRequester("Info","Online",0) 
Else
    MessageRequester("Info","Offline",0) 
EndIf
Gruss, EDI

Verfasst: 06.06.2006 21:02
von cofter
Funktioniert bei mir wunderbar.
In deinem Snippet fehlt aber InitNetwork().
Wenn das so sein sollte hab ich nix gesagt. ^^

mfg
Cofter

Verfasst: 06.06.2006 21:11
von EDI
cofter hat geschrieben:Funktioniert bei mir wunderbar.
In deinem Snippet fehlt aber InitNetwork().
Wenn das so sein sollte hab ich nix gesagt. ^^

mfg
Cofter
Ja aber wenn der Connect zu lange dauert sprich es kann kein Internet gefunden werden und ich das Fenster bewege, dann verschwindet das Wort "Bitte warten..."

Hierbei verschwinden auch die Wörter im Fenster...

Code: Alles auswählen

Global FontID1
FontID1 = LoadFont(2, "Arial", 12, #PB_Font_Bold)
 If OpenWindow(2, 390, 255, 217, 46, "",  #PB_Window_WindowCentered)
    If CreateGadgetList(WindowID(2))
      TextGadget(2, 10, 15, 200, 20, "Bitte warten...", #PB_Text_Center)
      SetGadgetFont(2, FontID1)
        EndIf
  EndIf
Delay(20000)

Verfasst: 06.06.2006 21:22
von AND51
EDI hat geschrieben:Ja aber wenn der Connect zu lange dauert sprich es kann kein Internet gefunden werden und ich das Fenster bewege, dann verschwindet das Wort "Bitte warten..."
Dann reagierst du zu lange nicht auf WindowEvent()s. Genau dieses Problem hatte ich auch, aber nirgendwo steht einmal vernünftig beschrieben, wei man (s)ein Fenster refresht (PB 3.94).

Ich bin erst auf UpdateWindow_(hWnd) heringefallen, aber das sendet nur ein #WM_REPAINT, die Konstante, die mein PB nicht mal kennt, an das übergebene Fenster.

Versuchs mal hiermit, das ist das Beste, das ich gefunden habe und nutze:

Code: Alles auswählen

InvalidateRect_(a, 0, b)
Für a setzt du null ein, wenn du den gesamten Desktop refreshen willst oder die WindowID() des zu refreshenden Fensters (also deine Fenster-ID).
Für b setzt du entweder 0 oder 1 ein, wenn du 1 einsetzt, wird so refreshed, dass dre Hintergrund dabei gelöscht wird. Um das zu unterbinden habe ich 0 eingesetzt.

Verfasst: 06.06.2006 21:23
von cofter
Also ich habe beides nochmal ausprobiert und bei mir verschwindet nichts.

Verfasst: 06.06.2006 22:12
von EDI
AND51 hat geschrieben:
EDI hat geschrieben:Ja aber wenn der Connect zu lange dauert sprich es kann kein Internet gefunden werden und ich das Fenster bewege, dann verschwindet das Wort "Bitte warten..."
Dann reagierst du zu lange nicht auf WindowEvent()s. Genau dieses Problem hatte ich auch, aber nirgendwo steht einmal vernünftig beschrieben, wei man (s)ein Fenster refresht (PB 3.94).

Ich bin erst auf UpdateWindow_(hWnd) heringefallen, aber das sendet nur ein #WM_REPAINT, die Konstante, die mein PB nicht mal kennt, an das übergebene Fenster.

Versuchs mal hiermit, das ist das Beste, das ich gefunden habe und nutze:

Code: Alles auswählen

InvalidateRect_(a, 0, b)
Für a setzt du null ein, wenn du den gesamten Desktop refreshen willst oder die WindowID() des zu refreshenden Fensters (also deine Fenster-ID).
Für b setzt du entweder 0 oder 1 ein, wenn du 1 einsetzt, wird so refreshed, dass dre Hintergrund dabei gelöscht wird. Um das zu unterbinden habe ich 0 eingesetzt.
das hilft mir leider nicht weiter.... das war irgendwie in BlitzPlus besser :-/
wenn ich das Fenster mit der Maus bewege geht der Inhalt weg :-(

gruss, EDI

Verfasst: 07.06.2006 00:06
von PMV
Was macht dein Programm während es versucht zu einem Server eine
Verbindung auf zu bauen?

Genau, warten ... warten das der Befehl einen wert zurück gibt.
Während dieses wartens passiert also ansonnsten nichts.
Wird aber (Wait)WindowEvent() nicht in einer schleife aufgerufen, kann
das Fenster nciht mehr geupdatet werden. Das hat AND51 schon richtig
gemerkt ... was also tun.

*Grübel*, wenn ein Befehl das Programm anhält, muss also ein Thread
her :D ... das bedeutet Prozedur erstellen in welchem zu einem Server
Verbunden wird. Dann Fenster erstellen, die angesprochende Prozedur als
Thread starten und darunter die Schleife mit (Wait)WindowEvent() und
was da noch so rein soll.

Weitere Infos zu Threads sind im Forum zu genuge auffindbar :D

MFG PMV

Verfasst: 07.06.2006 22:03
von EDI
PMV hat geschrieben:Was macht dein Programm während es versucht zu einem Server eine
Verbindung auf zu bauen?

Genau, warten ... warten das der Befehl einen wert zurück gibt.
Während dieses wartens passiert also ansonnsten nichts.
Wird aber (Wait)WindowEvent() nicht in einer schleife aufgerufen, kann
das Fenster nciht mehr geupdatet werden. Das hat AND51 schon richtig
gemerkt ... was also tun.

*Grübel*, wenn ein Befehl das Programm anhält, muss also ein Thread
her :D ... das bedeutet Prozedur erstellen in welchem zu einem Server
Verbunden wird. Dann Fenster erstellen, die angesprochende Prozedur als
Thread starten und darunter die Schleife mit (Wait)WindowEvent() und
was da noch so rein soll.

Weitere Infos zu Threads sind im Forum zu genuge auffindbar :D

MFG PMV
Hallo PMV & AND51,

super danke... genau so ein Tipp habe ich gebraucht. Jetzt klappt alles, so wie ich es haben möchte. Danke

gruss, EDI