- WindowID(0) ==> ist die Fensternummer? Wenn ich also nur 1 Fenster habe dann kann ich statt: WindowID(0) einfach: "0 oder 1 oder ..." schreiben?
- was hat es mit der 2. "0" auf sich?
- das heisst dann, Windows ruft dann nach dem einmaligem Aufruf vom Programm die Prozedure xxxxx automatisch alle 4000 ms auf? Ohne jeweils wieder vom Programm aufgerufen zu werden?
Ich poste hier mal meinen Code ( den ich ohne Edel wohl nicht hätte ):
Code: Alles auswählen
Procedure hauptfenster()
If OpenWindow(0,400,300,330,220,"İtalyanca - Release 1.1",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar )
EndIf
If LoadFont(1, "Arial", 10)
SetGadgetFont(#PB_Default, FontID(1))
EndIf
If LoadImage(0, "I.bmp")
LoadImage(1, "Tr.bmp")
EndIf
If CreateGadgetList(WindowID(0))
TextGadget(0, 10,10, 230, 30, "Giuseppe, bana İtalyanca öğrettiğin")
TextGadget(1, 10,40,200, 30, "için çok teşekkür ederim.")
ImageGadget(2, 250,10,10, 10,ImageID(0))
TextGadget(3, 250,70, 350, 30, "Saygılar")
TextGadget(4, 250,100, 350, 30, "Michael")
TextGadget(5, 10,130, 220, 30, "Şu anda programın kelime hazinesi: ")
TextGadget(6, 250,130, 150, 30, "")
ButtonGadget(7, 35, 170, 250, 30, "Program başlamak için tıklayın")
EndIf
If ReadFile(1,"Wortschatz.dat")
laengel.l= Lof(1)
zeilenanzahlw.w=laengel.l/162
zeilenanzahls.s= StrU((zeilenanzahlw.w), #Word)
SetGadgetText(6,zeilenanzahls.s)
CloseFile(1)
EndIf
If OpenWindow(1,50,100,250,130,"Hatırlatma pencere",#PB_Window_Invisible)
If LoadFont(1, "Arial", 15)
SetGadgetFont(#PB_Default, FontID(1))
EndIf
If CreateGadgetList(WindowID(1))
ImageGadget(8, 10,10,10, 10,ImageID(0))
TextGadget(9, 90, 20, 150, 50, "")
ImageGadget(10, 10,70,10, 10,ImageID(1))
TextGadget(11, 90,80, 150, 50, "")
EndIf
EndIf
EndProcedure
hauptfenster()
Procedure Hidewin()
Static zeit
If ElapsedMilliseconds() > zeit
zeit = ElapsedMilliseconds() + 180111
If ReadFile(1,"Wortschatz.dat")
laengel.l= Lof(1)
;Debug laengel.l
zeilenanzahlw.w=laengel.l/162
zeilenanzahls.s= StrU((zeilenanzahlw.w), #Word)
zufallszeilennummerw.w= Random(zeilenanzahlw.w-1)
FileSeek(1,zufallszeilennummerw.w*162)
wert1s.s= StrU((zufallszeilennummerw.w+1), #Word)
wert2s.s=ReadString(1)
italienischs.s=Left(wert2s.s,40)
tuerkischs.s=Mid(wert2s.s,41, 40)
deutschs.s=Mid(wert2s.s,81, 40)
englischs.s=Mid(wert2s.s,121, 40)
SetGadgetText(9,italienischs.s)
SetGadgetText(11,tuerkischs.s)
Debug "Zeile: "+wert1s.s+" Italienisch: "+italienischs.s+" Türkisch: "+tuerkischs.s+" Deutsch: "+deutschs.s+" Englisch: "+englischs.s
CloseFile(1)
EndIf
;HideWindow(1,0)
SetWindowState(1, #PB_Window_Normal)
StickyWindow(1,1)
Else
;HideWindow(1,1)
SetWindowState(1, #PB_Window_Minimize)
EndIf
EndProcedure
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventID = #PB_Event_Gadget
If EventGadget()=7
SetTimer_(0,0,4000,@Hidewin())
SetWindowState(0, #PB_Window_Minimize)
EndIf
EndIf
Until quit=1
End
Nun ist mir und meinen Mitschülern aufgefallen, dass es mit der "Anzeigezeit" von 4 Sekunden ( 4000 ms ) nicht immer hinhaut. Manchmal verschwindet das Fenster schon nach vielleicht 2 Sekunden, jedenfalls in einer kürzeren Zeit - und natürlich nur manchmal.
Ich habe dann versucht es mit einer "krummen" Zahl ( 180111) zu lösen, um vielleicht einem gemeinsamen Vielfachen entgegenzuwirken - jedoch ohne Unterschied.Das Verhalten kam mir jedenfalls nicht logisch vor, deshalb meine Frage am Anfang was es mit dem Befehl SETTIMER... mit all seinen Komponenten so auf sich hat.
KeyPusher - vielen Dank,
da verstehe ich nicht viel - wird wohl viel "C" verlangt. Kommt mir dann noch komplizierter vor mit den ganzen Ausdrücken (UINT_PTR SetTimer( HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
).
Die "..." mache ich zum Abheben vom übrigen Text.
Es kommt der Befehl:"KillTimer " vor - ist der nötig?