Seite 2 von 2
Re: Grafikfehler im ListIconGadget
Verfasst: 26.07.2007 12:29
von Donald
BI2 hat geschrieben:Hallo, noch keiner da?
Dann mache ich mal den Anfang.
Im ListIconGadget treten unter Win XP Grafikfehler auf (unter W9x und 2K gab es keine Probleme).
Hi,
kennt man irgendwoher den Fehler
Schau mal hier rein:
http://www.purebasic.fr/german/viewtopi ... ght=#67149
Verfasst: 26.07.2007 17:22
von BI2
@Donald: Die Suche im Board habe ich zwar bemüht, über diesen Artikel bin ich aber nicht gestolpert (wahrscheinlich falsche Suchbegriffe)
Habe es mal mit dem Tip von Fluid Byte versucht, leider ohne Erfolg. Vielleicht hat ja noch jemand eine Idee wo der Fehler liegt.
Code: Alles auswählen
#LVM_FIRST = $1000
#LVM_SETEXTENDEDLISTVIEWSTYLE = (#LVM_FIRST + 54)
#LVM_GETEXTENDEDLISTVIEWSTYLE = (#LVM_FIRST + 55)
#LVS_EX_DOUBLEBUFFER = $00010000
Procedure MakeDoubleBuffered(gadget.l)
Protected styles.l
styles = SendMessage_(GadgetID(gadget), #LVM_GETEXTENDEDLISTVIEWSTYLE, 0, 0)
styles | #LVS_EX_DOUBLEBUFFER
SendMessage_(GadgetID(gadget), #LVM_SETEXTENDEDLISTVIEWSTYLE, 0, styles)
EndProcedure
If OpenWindow(0, 200, 200, 300, 245, "ListIcon-Test", #PB_Window_SystemMenu | #PB_Window_TitleBar)
If CreateGadgetList(WindowID(0))
ListIconGadget(0, 0, 0, 300, 245, "Column0", 80, #PB_ListIcon_CheckBoxes | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_MultiSelect)
AddGadgetColumn(0, 1, "Column1", 80)
AddGadgetColumn(0, 2, "Column2", 80)
EndIf
EndIf
For i = 0 To 50
AddGadgetItem(0, -1, "Test " + Str(i) + Chr(10) + "Test " + Str(i) + Chr(10) + "Test " + Str(i))
Next
MakeDoubleBuffered(0)
SetActiveGadget(0)
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
End
Gruß, BI2
Verfasst: 27.07.2007 02:33
von PureLust
BI2 hat geschrieben:Vielleicht hat ja noch jemand eine Idee wo der Fehler liegt.
Versuch doch mal
den Tip von MLK.
Seine Lösung klingt in meinen Augen recht plausibel.
Verfasst: 27.07.2007 14:42
von BI2
@PureLust: Hier hatte ich das Problem, wie ich eine Message abfange, aber die Boardsuche war mein Freund
Mit folgendem Ergebnis kann man Leben. Es zuckt zwar noch etwas nervös direkt beim scrollen, danach ist aber alles in Ordnung.
Code: Alles auswählen
If OpenWindow(0, 200, 200, 300, 245, "ListIcon-Test", #PB_Window_SystemMenu | #PB_Window_TitleBar)
If CreateGadgetList(WindowID(0))
ListIconGadget(0, 0, 0, 300, 245, "Column0", 80, #PB_ListIcon_CheckBoxes | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection | #PB_ListIcon_MultiSelect)
AddGadgetColumn(0, 1, "Column1", 80)
AddGadgetColumn(0, 2, "Column2", 80)
EndIf
EndIf
For i = 0 To 50
AddGadgetItem(0, -1, "Test " + Str(i) + Chr(10) + "Test " + Str(i) + Chr(10) + "Test " + Str(i))
Next
Global OldProcedure
Procedure CallbackProcedure(hWnd, Message, wParam, lParam)
Select Message
Case #WM_VSCROLL
InvalidateRect_(GadgetID(0), 0, #True)
EndSelect
ProcedureReturn CallWindowProc_(OldProcedure, hWnd, Message, wParam, lParam)
EndProcedure
OldProcedure = SetWindowLong_(GadgetID(0), #GWL_WNDPROC, @CallbackProcedure())
SetActiveGadget(0)
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
End
Nochmal danke an alle.
Gruß, BI2