Seite 1 von 3

Verfasst: 18.01.2008 20:58
von Fluid Byte

Code: Alles auswählen

DisableDebugger

OpenWindow(0,0,0,320,240,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreateGadgetList(WindowID(0))
ListIconGadget(0,0,0,320,240,"Name",250)

StartTime = ElapsedMilliseconds()
For i=1 To 10000
	AddGadgetItem(0,-1,"List-View Item #" + Str(i))
Next
MessageRequester("Zeit",Str(ElapsedMilliseconds() - StartTime) + " MS",64)

ClearGadgetItemList(0)

SendMessage_(GadgetID(0),#WM_SETREDRAW,0,0)

StartTime = ElapsedMilliseconds()
For i=1 To 10000
	AddGadgetItem(0,-1,"List-View Item #" + Str(i))
Next
MessageRequester("Zeit",Str(ElapsedMilliseconds() - StartTime) + " MS",64)

SendMessage_(GadgetID(0),#WM_SETREDRAW,1,0)

While WaitWindowEvent() ! #PB_Event_CloseWindow : Wend

Verfasst: 18.01.2008 21:17
von scholly
Hab ich doch schon längst probiert, siehe mein Posting von 19:34:20.

Jetzt seit ihr zu dritt in der Ecke und könnt Skat spielen :lol:

Verfasst: 18.01.2008 21:51
von Fluid Byte

Code: Alles auswählen

SendMessage_(#main_list, #WM_SETREDRAW, #False, 0 ) 
:roll:

Verfasst: 18.01.2008 22:02
von scholly
Spielen wir jetzt heiteres Grimassenraten ?

Warum rollst Du mit den Glubschern ?

Verfasst: 18.01.2008 22:19
von Fluid Byte
Ich könnte jetzt sagen geh auf MSDN und schau dir Parameter dieses Befehls an dann würdest du wissen was ich meine. So ein Arschloch bin ich aber nicht! Bild

Der Befehl SendMessage_() erwartet als ersten Parameter keine Konstante sondern ein Fenster Handle.

Verfasst: 18.01.2008 22:36
von scholly
Fluid Byte hat geschrieben:Der Befehl SendMessage_() erwartet als ersten Parameter keine Konstante sondern ein Fenster Handle.
Und warum benutzt Du dann in SendMessage_(GadgetID(0),#WM_SETREDRAW,0,0) eine Gadget-ID ?

Verfasst: 18.01.2008 22:42
von Fluid Byte
GadgetID() ist ein Befehl und keine ID. Du gibst lediglich eine ID als Parameter an um das Gadet festzulegen von welchem du das Handle ermitteln willst. Der Name ist wohl etwas verwirrend da "ID" im Namen enthalten ist du aber tatsächlich ein Handle erhältst was für diversen API Schnick-Schnack nötig ist.

Gadgets sind ebenfalls nichts weiter als normale Fenster.

Verfasst: 18.01.2008 23:16
von scholly
Wenn ich SendMessage_(GadgetID(#main_win), #WM_SETREDRAW, #False, 0 ) verwende,
bekomme ich [ERROR] #Gadget object not initialized :shock:

Wenn ichSendMessage_(GadgetID(#main_list), #WM_SETREDRAW, #False, 0 ) verwende, läufts genauso langsam, wie vorher.

Wenn ichSendMessage_(WindowID(#main_win), #WM_SETREDRAW, #False, 0 ) verwende, läufts genauso langsam, wie vorher.

Mit "genauso langsam" sind Werte von ca 22000 Milisekunden gemeint, +/- 300-500 Millisekunden.

Da ich bei Deinem Code Werte von 500 zu 130 +/- 10-25 ms bekomme, deckt sich der "Gewinn" und ich bin genauso weit wie vorher, oder hab ich nochwas flasch gemacht ?

Verfasst: 18.01.2008 23:29
von Fluid Byte
Ufff, du bist 'ne harte Nuss ... Bild
scholly hat geschrieben:Wenn ich SendMessage_(GadgetID(#main_win), #WM_SETREDRAW, #False, 0 ) verwende,
bekomme ich [ERROR] #Gadget object not initialized :shock:
Du gibts ID eines Fenster an, gebraucht wird aber die vom ListIconGadget().
scholly hat geschrieben:Wenn ichSendMessage_(GadgetID(#main_list), #WM_SETREDRAW, #False, 0 ) verwende, läufts genauso langsam, wie vorher.
Wage ich stark zu bezweifeln. Ich kann aber sowie nur Tipps geben da ich deine DB nicht habe und den Code nie unter realistischen Verhältnissen testen kann.
scholly hat geschrieben:Wenn ichSendMessage_(WindowID(#main_win), #WM_SETREDRAW, #False, 0 ) verwende, läufts genauso langsam, wie vorher.
Wie beim ersten Versuch, nur hast du hier auch noch den falschen Befehl verwendet: WindowID() != GadgetID() Bild
scholly hat geschrieben:Da ich bei Deinem Code Werte von 500 zu 130 +/- 10-25 ms bekomme, deckt sich der "Gewinn" und ich bin genauso weit wie vorher, oder hab ich nochwas flasch gemacht ?
Werte 500 zu 130? Nein, ich glaube du mischt die Ergebnisse hier. Der erste Dialog zeigt die Zeit ohne #WM_SETREDRAW und der zweite mit.

Verfasst: 18.01.2008 23:50
von scholly
Fluid Byte hat geschrieben:Ufff, du bist 'ne harte Nuss ...
Nuja, ich will ja nicht, daß man hinterher beim Starten der DB oder filtern der Daten Kaffe trinken gehen kann.
Und ich lerne manchmal gerne ;)
Fluid Byte hat geschrieben:Werte 500 zu 130? Nein, ich glaube du mischt die Ergebnisse hier. Der erste Dialog zeigt die Zeit ohne #WM_SETREDRAW und der zweite mit.
Ja. der erste Wert ist doch mit 500 höher, als der zweite mit 130.
So sollte es doch sein, oder nicht ?
Ist bei Dir der 2. Wert höher als der erste ?

Ändere doch bitte Dein Beispiel mal so, daß das Fenster und das LIG nicht beide 0 sind, sondern das Fenster 0 und das LIG 1 hat.
Bei mir kackts jetzt bei SendMessage_(GadgetID(0),#WM_SETREDRAW,0,0)ab.
Wenn ich nun aber nach SendMessage_(GadgetID(1),#WM_SETREDRAW,0,0) ändere, gehts wieder.

Erklär mir bitte, warum, SentMessage_ tuts doch augenscheinlich mitm Gadget und nicht mitm Window :freak: