- 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?