Fensterinhalt wird nur bei Mausbewegung aktualisiert

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Mok »

Vera hat geschrieben: Man kann sich helfen, indem man zwischendurch ein völlig anderes ICO einbindet (zB 1kb statt ein 6er).
Das habe ich auch schon getan... insgesamt ist das schon mein 3. ICO, zwischendurch hab ich auch mal garkeines angegeben. Im Fensterrahmen (oben links) ist zwar das neue und in der Taskbar auch, aber das Programm "itself" (also das Symbol wo man draufklickt) hat noch das alte Icon
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Kaeru Gaman »

Mok hat geschrieben:WaitWindowEvent(1)
:lol:

... das ist jetzt nicht dein Ernst, gell?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von ts-soft »

Vera hat geschrieben:
ts-soft hat geschrieben:(gibt auch professionelle Tools, die das können :mrgreen: )
zB: :?: - denn TweakUI zerfetzt einem dabei auch gleich den Desktop :freak:

Grüße ~ Vera
TweakUI??? Das gibts doch seid w2k nicht mehr :lol:
z.B. TuneUp 2010
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Vera »

Mok hat geschrieben:aber das Programm "itself" (also das Symbol wo man draufklickt) hat noch das alte Icon
Du meinst vermutlich das ExeIcon im Explorer - das steckt in dem Cache. Ggf. hilft, außer Cachelöschen, zwischendurch den Programmnamen zu ändern.

Alles nur halbgar - man müßte ein MiniTool haben, um den IconRefresh-Befehl ausführen zu lassen.

Gruß ~ Vera
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Mok »

Kiffi hat geschrieben:Versieh Dein WaitWindowEvent() mit einem Timeout und schon klappts.
Kaeru Gaman hat geschrieben:
Mok hat geschrieben:WaitWindowEvent(1)
:lol:

... das ist jetzt nicht dein Ernst, gell?
Ich will ein Bier. :shock:
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Kaeru Gaman »

also, ein TimeOut von EINER Millisekunde ist reichlich unnütz, dann kannst du auch gleich nur WindowEvent() hinschreiben.

nimm mal 100.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Vera
Beiträge: 928
Registriert: 18.03.2009 14:47
Computerausstattung: Win XP SP2, Suse 11.1
Wohnort: Essen

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Vera »

ich uso !
Bild ~ Bild ~ Bild

Bild ~ Vera

@ ts-soft
Danke für den 1.Tip - aber 35bucks sind indiskutable
Zuletzt geändert von Vera am 29.11.2009 23:01, insgesamt 1-mal geändert.
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Benutzeravatar
Kai
Beiträge: 264
Registriert: 29.09.2005 20:58
Computerausstattung: iMac 2019
Wohnort: Hannover
Kontaktdaten:

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Kai »

Hab mir mal erlaubt dein Source etwas umzuschreiben, so würde ich es realisieren.
Soll nur ein Vorschlag sein. :mrgreen:

Code: Alles auswählen

EnableExplicit

Enumeration
  #Win_Main
EndEnumeration

Enumeration
  #TX_Main_Full
  #TX_Main_Use
  #TX_Main_UsePercent
  #TX_Main_Free
  #TX_Main_FullC
  #TX_Main_UseC
  #TX_Main_UsePercentC
  #TX_Main_FreeC
EndEnumeration

Structure _WinLoop
  WindowEvent.i
  EventWindow.i
  EventGadget.i
  EventMenu.i
  EventType.i
  EventTimer.i
  EventlParam.i
  EventwParam.i
  ActiveWindow.i
  ActiveGadget.i
EndStructure
Global Event._WinLoop

Procedure.s FormatPointedSize(Size.q)
  If Size > 999
    Protected lNext.l, sSize.s = Str(Size), sTemp.s, sResult.s
    For lNext = 1 To Len(sSize)
      sResult = Mid(sSize, Len(sSize) - lNext + 1, 1)
      If lNext % 3 = 0 And lNext <> Len(sSize)
        sResult = "." + sResult
      EndIf
      sTemp = sResult + sTemp
    Next
    ProcedureReturn sTemp
  Else
    ProcedureReturn Str(Size)
  EndIf
EndProcedure

Procedure OpenWindow_Main()
  If OpenWindow(#Win_Main, 428, 532, 215, 85, "RamView",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    TextGadget(#TX_Main_Full, 5, 5, 80, 15, "Gesamt:", #PB_Text_Right)
    TextGadget(#TX_Main_Use, 5, 25, 80, 15, "Verbrauch:", #PB_Text_Right)
    TextGadget(#TX_Main_UsePercent, 5, 45, 80, 15, "Verbrauch %", #PB_Text_Right)
    TextGadget(#TX_Main_Free, 5, 65, 80, 15, "Frei:", #PB_Text_Right)
    TextGadget(#TX_Main_FullC, 90, 5, 120, 15, "...")
    TextGadget(#TX_Main_UseC, 90, 25, 120, 15, "...")
    TextGadget(#TX_Main_UsePercentC, 90, 45, 120, 15, "...")
    TextGadget(#TX_Main_FreeC, 90, 65, 120, 15, "...")
  EndIf
EndProcedure

Procedure RefreshMemory()
  Protected sTemp.s
  Protected MemEx.MEMORYSTATUSEX
  
  MemEx\dwLength = SizeOf(MEMORYSTATUSEX)
  GlobalMemoryStatusEx_(@MemEx)
  
  sTemp = FormatPointedSize(MemEx\ullTotalPhys / 1024 / 1024) + " MB"
  If sTemp <> GetGadgetText(#TX_Main_FullC)
    SetGadgetText(#TX_Main_FullC, sTemp)
  EndIf  
  sTemp = FormatPointedSize((MemEx\ullTotalPhys - MemEx\ullAvailPhys) / 1024 / 1024) + " MB"
  If sTemp <> GetGadgetText(#TX_Main_UseC)
    SetGadgetText(#TX_Main_UseC, sTemp)
  EndIf  
  sTemp = FormatPointedSize(MemEx\dwMemoryLoad) + " %"
  If sTemp <> GetGadgetText(#TX_Main_UsePercentC)
    SetGadgetText(#TX_Main_UsePercentC, sTemp)
  EndIf  
  sTemp = FormatPointedSize(MemEx\ullAvailPhys / 1024 / 1024) + " MB"
  If sTemp <> GetGadgetText(#TX_Main_FreeC)
    SetGadgetText(#TX_Main_FreeC, sTemp)
  EndIf  
EndProcedure

Procedure Main()
  OpenWindow_Main()
  
  SetTimer_(0, 0, 250, @RefreshMemory())
  
  Repeat
    Event\WindowEvent = WaitWindowEvent()
    Event\EventGadget = EventWindow()
    Select Event\WindowEvent
      Case #PB_Event_Gadget
        Select Event\EventGadget
      EndSelect
      Case #PB_Event_CloseWindow
        Select Event\EventWindow
          Case #Win_Main : End
        EndSelect
    EndSelect
  ForEver  
EndProcedure

Main()
Meine Homepage - Aktuelle Projekte - Launcher
Letzte PB-Version - Window 7 x86
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Kaeru Gaman »

aber selbst mit einem timeout von 1 braucht das proggi bei mir "nur" eine sekunde bis die buttons auftauchen...

wenn ich das erste Ermitteln von ElapsedTime direkt vor die Schleife schreibe und den timeout auf 100 hochstelle, wirds auch nicht viel besser...

dauert das echt ganze 10 sekunden bei dir?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Mok
BotHunter
Beiträge: 1484
Registriert: 26.12.2005 14:14
Computerausstattung: MSI GX780R
Intel Core i5-2410M
Nvidia GT 555M
Windows 7 Home Premium 64 bit
Wohnort:   

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Mok »

aber selbst mit einem timeout von 1 braucht das proggi bei mir "nur" eine sekunde bis die buttons auftauchen...

wenn ich das erste Ermitteln von ElapsedTime direkt vor die Schleife schreibe und den timeout auf 100 hochstelle, wirds auch nicht viel besser...

dauert das echt ganze 10 sekunden bei dir?
Leider ja :( - meistens noch viel mehr, da bekomme ich dann die Abbruch-meldung vom Debugger.
Mein PC ist so dermaßen schlecht, ich habe schon eine CPU-Temeratur von 74 °C, wenn ich nur FiFi mit 2 Tabs offen habe, Skype laufen habe und gerade nix tu... dabei ist das Modell grad erst vor 'nem Jahr rausgekommen...

@Kai:
:o
Also, falls das für einen Großteil der Board-User übersichtlicher ist, brauch ich wirklich ein Bier!
Win 7 Home Premium 64 bit | PureBasic 5.20 - x86 und x86-64 | Firefox [aktuelle stable-Version hier einfügen]
"Jeder macht irgendwann mal Fehler, darum gibt's auch Bleistifte mit Radiergummi." --Carl
Antworten