SetWindowState(0, #PB_Window_Minimize)

Anfängerfragen zum Programmieren mit PureBasic.
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

Danke danke danke Edel,
so habe ich es mir vorgestellt ( das der Debug die Werte nicht ausgibt ist nicht so wichtig ).
Ich werde mir das dann morgen ausdrucken und nachvollziehen wie das alles abläuft.
Ich wäre da nie draufgekommen - bin fast verrückt geworden - habe nachts schon an den Code gedacht :) .

Nochmals vielen vielen Dank - jetzt wo alles läuft, werde ich noch kleinere Schönheitsoperationen an den Fenstern machen, und dann die Wörter nach und nach in die Datei eingeben um es an meine Kollegen weiterzugeben.

Tschüssle - jetzt ruhig schlafen kann
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

Hallo Edel,
ich habe gestern noch bis nachts um 0:30 den Code etwas umgebaut (Schönheitsoperation ) und habe dann eine .exe daraus gemacht, wo ich hier in der Arbeit teste. Er ist hier dargestellt.

Code: Alles auswählen

   
  Procedure hauptfenster() 
    If OpenWindow(0,400,300,330,220,"İtalyanca - Release 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") 
        laengew.w= Lof(1) 
        zeilenanzahlw.w=laengew.w/62 
        zeilenanzahls.s= StrU((zeilenanzahlw.w), #Word) 
        SetGadgetText(6,zeilenanzahls.s) 
       CloseFile(1) 
     EndIf 
    
    
    
    
    If OpenWindow(1,50,100,250,130,"Testfenster",#PB_Window_BorderLess|#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() + 120000 
      
      If ReadFile(1,"Wortschatz.dat") 
        laengew.w= Lof(1) 
        zeilenanzahlw.w=laengew.w/62 
        zeilenanzahls.s= StrU((zeilenanzahlw.w), #Word) 
        
        zufallszeilennummerw.w= Random(zeilenanzahlw.w-1) 
        
        FileSeek(1,zufallszeilennummerw.w*62)                                        
        
        wert1s.s= StrU((zufallszeilennummerw.w+1), #Word)            
        wert2s.s=ReadString(1) 
        italienischs.s=Left(wert2s.s,20) 
        tuerkischs.s=Mid(wert2s.s,21, 20) 
        deutschs.s=Mid(wert2s.s,41, 20) 
        
        SetGadgetText(9,italienischs.s)    
        SetGadgetText(11,tuerkischs.s) 
        Debug "Zeile: "+wert1s.s+"     Italienisch:    "+italienischs.s+"     Türkisch:    "+tuerkischs.s+"     Deutsch:    "+deutschs.s    
     
        
        CloseFile(1) 
        
      EndIf 
      
      HideWindow(1,0) 
      
    Else 
      HideWindow(1,1) 
    EndIf 
    
  EndProcedure 
  
  Repeat      
    
    EventID = WaitWindowEvent() 
    
    If EventID = #PB_Event_CloseWindow 
      quit = 1 
    EndIf 
    
    If EventID = #PB_Event_Gadget    
      If EventGadget()=7
         SetTimer_(0,0,3000,@Hidewin()) 
      EndIf 
      
       
    EndIf 
    
  Until quit=1 
  
  
  End 
  
; IDE Options = PureBasic v4.00 (Windows - x86)
; CursorPosition = 66
; FirstLine = 48
; Folding = -
; Executable = Erinnerungsfenster1.exe
 
If EventID = #PB_Event_Gadget
If EventGadget()=7
SetTimer_(0,0,3000,@Hidewin())
EndIf
EndIf
Habe jetzt zum Code ein paar Fragen:

1.) Das "SetTimer_(0,0,3000,@Hidewin())" ist wohl ein Programmteil, das nach dem einmaligem Aufrufen von alleine weiterläuft, und nach einer Zeit von 3 Sekunden die Procedure "Hidewin()" startet, in der dann verglichen wird ob die Zeit schon abgelaufen ist oder nicht. Ein 2. Aufrufen findet ja nicht mehr statt. Ist das so?

2.) Ich habe nach dem "SetTimer_(0,0,3000,@Hidewin())" Befehl einmal das "SetWindowState(0, #PB_Window_Minimize)" eingefügt - das Startfenster sollte das Programm starten und dann selbst sich minimieren, war der Gedanke aus Schönheitsgründen. Danach war aber auch das Erinnerungsfenster immer minimiert. Warum ist das so? ( habe es natürlich gleich wieder rückgängig gemacht :) )

3.) Gibt es zum "HideWindow(1,0) " Befehl noch was anderes wie "HideWindow(1,0) to all"? Grund: Es passiert hier oft, das das Fenster zwar nach der gewünschten Zeit auftaucht ( ich sehe es an der Taskleiste das sich das was tut ) aber das Fenster ist sozusagen von den anderen Anwendungen die gerade offen sind verdeckt. Manchmal kommt es aber auch in den Vordergrund - aber oft eben nicht. Gibt es da was ( vielleicht API ) das man vor dem "HideWindow(1,0) " Befehl setzt damit das Erinnerungsfenster, oder das Programm in dem Moment selbst aktuell wird und dadurch trotz der Anwendungen die gerade offen sind, im Vordergrund angezeigt wird?

Vielen Dank für alles.
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Beitrag von HemSA »

Hallo Edel,
ich habe das Problem mit dem 3. Punkt gelöst.

Ich habe "HideWindow(1,0)" durch "SetWindowState(1, #PB_Window_Normal)"
und "HideWindow(1,1)" durch "SetWindowState(1, #PB_Window_Minimize)ersetzt. Jetzt klappte es bei mir daheim gut. Egal welche Anwendung ich offen habe. das Erinnerungsfenster erscheint immer.

Das "SetWindowState(#Window, Status)" hat wahrscheinlich eine höhere Priorität als das "HideWindow(#Window, Status)".

Auch das mit dem 2. Punkt hat sich errledigt - jetzt klappt es wie ich es wollte.

Und Danke nochmal, ohne deine Hilfe würde ich bestimmt jetzt noch rummachen.

Tschüssle
PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Antworten