Fensterinhalt wird nur bei Mausbewegung aktualisiert

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von Kaeru Gaman »

ja logisch, das solltest du doch langsam geblickt haben, bist ja nicht erst seit heute morgen hier.... /:->
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 »

Mok hat geschrieben: Sollte das heißen, dass ein bisschen Delay() hier und etwas Delay() da weniger CPU in Anspruch nehmen?
Ja, aber das ist nicht der empfohlene Weg! Delay() gehört nicht in eine Fensteranwendung!
Ein vernünftiges Event-Loop (WaitWindowEvents()) und Timer sind schon der richtige Weg.

ElapsedMillisecond usw. sind für einmalige Zeitmessungen (timeout usw. ) geeignet, aber nicht für sich
wiederholende.
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: Fensterinhalt wird nur bei Mausbewegung aktualisiert

Beitrag von c4s »

Ich dachte es soll ein Programm von dir werden?!

Du hast hier nun schon soviele grundlegende Fragen gestellt, dass ich mal behaupte es wäre besser für deinen Lernfortschritt, wenn du dir erstmal Fenster-Beispiel-Codes und Ähnliches genauer anguckst.

Übung macht den Meister ;)
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
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 »

Kaeru Gaman hat geschrieben:ja logisch, das solltest du doch langsam geblickt haben, bist ja nicht erst seit heute morgen hier.... /:->
Aehm... da hast du recht, aber wenn ich ein Einfensterprogramm machen würde, dann 3000 Millisek. Delay() machen würde und mit der Maus reinfahre habe ich eine Sanduhr... das spricht für mich eher für "keine Rückmeldung" und nimmt somit die CPU in Anspruch...
aber genug von CPU-Leistung gelabert...

Ich habe noch immer offene Fragen:
1.) Wenn ich das Programm starte, dann kann ich erst mal 10 Sek bis eine halbe Minute warten, bis ich was sehe (sowohl in PB als auch die EXE), an eventuellen Delays liegt's sicher nicht.
2.) Warum werden in der EXE alte Icondateien, die ich schon lange gelöscht habe und obwohl ich in Compiler-Optionen einen anderen Namen hingeschrieben hab noch immer verwendet?
3.) Wie kann ich machen, dass mein Programm keinen Eintrag in der Taskleiste hat?

Pre-Edit:
c4s hat geschrieben:Ich dachte es soll ein Programm von dir werden?!
:? Hast du was gesoffen?
90 % der Fensterbefehle könnte ich dich frei runterlabern, aber ich vergesse halt immer so kleine Stückchen... kein Wunder bei dem, wass ich alles wisssen muss :mrgreen: :lol:
Aber eigentlich ist das garnicht die erste Fensteranwendung die ich mache... ich habe auch schon für EVB (Easy VisualBookmarks) eine GUI gemacht (Release Frühjahr 2010), für Aimer ein Kontrollzentrum (wird wohl nie ein Release haben), einen GUI-PureBasic-Packer wollte ich auch mal mit GUI machen, bis ich gesehn habe, dass es schon zirka 1000 davon gibt.
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
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 »

Hier ist doch bereits das passende Beispiel für Dich, von Kiffi gepostet.

Ansonsten die Boardsuche nutzen, z.B. mit HideWindowFromTaskbar :mrgreen:

Wegen den falschen Icons mußte Dich an den Support von MS wenden oder selber den IconCache
leeren.
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 »

ts-soft hat geschrieben: Ansonsten die Boardsuche nutzen, z.B. mit HideWindowFromTaskbar :mrgreen:
Wenn ich das tue, finde ich nur einen Beitrag: DEINEN :lol:

Edit:
Wie ist das mit den Icons? Was hat das mit MS zu tun?
Ich muss das Icon doch unter Compiler-Optionen angeben.
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
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 »

Mok hat geschrieben: Wie ist das mit den Icons? Was hat das mit MS zu tun?
Ich muss das Icon doch unter Compiler-Optionen angeben.
Wenn Du ein falsches oder nicht existierendes Icon einträgst, wir das
Standard-Icon genutzt, aber manchmal nimmt Windows auch ein
falsches aus dem IconCache, den man am besten durch löschen
repariert (gibt auch professionelle Tools, die das können :mrgreen: )
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:1.) Wenn ich das Programm starte, dann kann ich erst mal 10 Sek bis eine halbe Minute warten, bis ich was sehe (sowohl in PB als auch die EXE), an eventuellen Delays liegt's sicher nicht.
würdest du bitte erstmal dein Programm in Ordnung bringen, bevor du immer neue Probleme mit dem Alten meldest?

natürlich dauert das lange, sämtliche erzeugungen der Gadgets erzeugen Events.
die müssen alle beim Start erstmal abgearbeitet werden, aber bei jedem Schleifendurchlauf rufst du RefreshMem() auf und setzt den Text von vier Gadgets.
also ist es kein Wunder, dass es ewig dauert, bis die Oberfläche fertig ist.

wenn du nur auf #Null oder #PB_Event_Timer den Tanz veranstaltest, wird das während des Aufbaus garnicht aufgerufen, dann gehts auch schneller.
wenn ich ein Einfensterprogramm machen würde, dann 3000 Millisek. Delay() machen würde und mit der Maus reinfahre habe ich eine Sanduhr... das spricht für mich eher für "keine Rückmeldung" und nimmt somit die CPU in Anspruch...
das ist Unsinn! das eine hat mit dem Anderen nichts zu tun.
"Keine Rückmeldung" heißt, dass keine Eventverarbeitung stattfindet.
ob die Ursache dafür eine Auslastung ist oder ein Delay(), ist damit nicht gesagt.
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 »

Kaeru Gaman hat geschrieben:würdest du bitte erstmal dein Programm in Ordnung bringen, bevor du immer neue Probleme mit dem Alten meldest?
What the hell?! :?
Das ist doch jetzt richtig so:

Code: Alles auswählen

Global MemoryAll.l
Global MemoryUse.l
Global MemoryPercUse.l
Global MemoryFree.l

Procedure RefreshMem()
  memex.MEMORYSTATUSEX
  memex\dwLength = SizeOf(MEMORYSTATUSEX)
  GlobalMemoryStatusEx_(@memex)
  
  MemoryAll = memex\ullTotalPhys/1024/1024
  MemoryUse = (memex\ullTotalPhys-memex\ullAvailPhys)/1024/1024
  MemoryPercUse = memex\dwMemoryLoad
  MemoryFree = memex\ullAvailPhys/1024/1024
EndProcedure

Procedure ExitRequester()
  quit = MessageBox_(#Null,"Wollen Sie RAM.inf wirklich beenden?","Ende",#MB_OK|#MB_YESNO)
  If quit = 6
    ProcedureReturn 1
  Else
    ProcedureReturn 0
  EndIf
EndProcedure

Enumeration
  #MainWindow
EndEnumeration

Enumeration
  #TextGadget_1
  #TextGadget_2
  #TextGadget_3
  #TextGadget_4
  #TextGadget_1a
  #TextGadget_2a
  #TextGadget_3a
  #TextGadget_4a
  #TextGadget_5
  #ButtonGadget_1
  #ButtonGadget_2
EndEnumeration

ExamineDesktops()
Global Width = DesktopWidth(0)
Global Height = DesktopHeight(0)

ElapsedTime = ElapsedMilliseconds()
RefreshMem()

OpenWindow(#MainWindow,Width-205,Height-204,199-5,149-5,"RAM.inf",#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
GadY = 10
TextGadget(#TextGadget_1,5,GadY,85,20,"RAM gesamt:",#PB_Text_Right)
TextGadget(#TextGadget_1a,95,GadY,85,20,Str(MemoryAll)+"  MB")
GadY+20
TextGadget(#TextGadget_2,5,GadY,85,20,"RAM-Verbrauch:",#PB_Text_Right)
TextGadget(#TextGadget_2a,95,GadY,85,20,Str(MemoryUse)+"  MB")
GadY+20
TextGadget(#TextGadget_3,5,GadY,85,20,"% Verbrauch:",#PB_Text_Right)
TextGadget(#TextGadget_3a,95,GadY,85,20,Str(MemoryPercUse)+"  %")
GadY+20
TextGadget(#TextGadget_4,5,GadY,85,20,"RAM frei:",#PB_Text_Right)
TextGadget(#TextGadget_4a,95,GadY,85,20,Str(MemoryFree)+"  MB")
GadY+20
ButtonGadget(#ButtonGadget_1,5,GadY,70,30,"Optionen")
ButtonGadget(#ButtonGadget_2,GadY+30,GadY,70,30,"Beenden")
GadY+35
TextGadget(#TextGadget_5,5,GadY,Height-204,20,"F1 für Hilfe            by LoRD Soft (Mok)")

Delay(250)

StickyWindow(#MainWindow,1)
Exit = 0
Repeat
  
  Event = WaitWindowEvent(1)
  
  Select Event
    Case #Null
      If ElapsedMilliseconds()>ElapsedTime+1000
        RefreshMem()
        SetGadgetText(#TextGadget_1a,Str(MemoryAll)+"  MB")
        SetGadgetText(#TextGadget_2a,Str(MemoryUse)+"  MB")
        SetGadgetText(#TextGadget_3a,Str(MemoryPercUse)+"  %")
        SetGadgetText(#TextGadget_4a,Str(MemoryFree)+"  MB")
        ElapsedTime = ElapsedMilliseconds()
      EndIf
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #ButtonGadget_2
          Exit = ExitRequester()
      EndSelect
    Case #PB_Event_CloseWindow
      Exit = 1
  EndSelect
 
Until Exit = 1
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
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 »

Hi Mok,

2) damit hab' ich mich auch heute rumärgen müßen. Für MS 'startest' (statt kompilierst) Du doch einfach immer nur das selbe Programm, das kann also nur das selbe ICO wie vorher haben = ressourcenschonende Logik
siehe: IconCache.db verhindert Update ...
Man kann sich helfen, indem man zwischendurch ein völlig anderes ICO einbindet (zB 1kb statt ein 6er).
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
°
<°)))o><
~~~~~~~~~
echo "Don't worry"
echo "Keep quiet"
@echo off
format forum:\
Antworten