[Kein PB Bug] Grafikfehler im ListIconGadget

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
Donald
Beiträge: 307
Registriert: 03.01.2005 02:21
Wohnort: Marl

Re: Grafikfehler im ListIconGadget

Beitrag 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
DONALD :D www.PureBasic-Donald.de gibt es im Moment nicht mehr
PureBasic - jaPBe - PureVisonXP - TailBite
Benutzeravatar
BI2
Beiträge: 146
Registriert: 26.11.2006 19:07

Beitrag 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
PB 5.7x (x64), LinuxMint 18.3 - Xfce (x64)

Einsteigerbuch: PureBasic - Eine Einführung in die Computer Programmierung
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag 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.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
BI2
Beiträge: 146
Registriert: 26.11.2006 19:07

Beitrag von BI2 »

@PureLust: Hier hatte ich das Problem, wie ich eine Message abfange, aber die Boardsuche war mein Freund :D

Mit folgendem Ergebnis kann man Leben. Es zuckt zwar noch etwas nervös direkt beim scrollen, danach ist aber alles in Ordnung. :allright:

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
PB 5.7x (x64), LinuxMint 18.3 - Xfce (x64)

Einsteigerbuch: PureBasic - Eine Einführung in die Computer Programmierung
Antworten