Page 1 sur 1
ListIcon et LVS_OWNERDATA
Publié : mar. 17/août/2010 20:40
par nico
Salut,
Quelqu'un aurait utilisé ce style #LVS_OWNERDATA avec une ListIcon, apparemment ça permettrait de charger beaucoup plus vite les Items, parce que là c'est vraiment trop lent.
Le problème c'est que AddGadgetItem ne fonctionne plus lorsqu'on rajoute ce style.
Si vous avez des infos, ça m'intéresse!

Re: ListIcon et LVS_OWNERDATA
Publié : mer. 18/août/2010 8:10
par gnozal
Voilà un exemple de ListIcon virtuel :
Code : Tout sélectionner
;
; Virtual ListIconGadget [Can Hold Lots Of Data]...
;
;... Use 1000000 items
#ItemCount = 1000000
#LVSICF_NOINVALIDATEALL = 1
#LVN_ODCACHEHINT = #LVN_FIRST - 13
;... Array to hold data
Global Dim myItems.s(#ItemCount,1)
Procedure WinCallback(hWnd, msg, wParam, lParam)
result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_NOTIFY
*pnmh.NMHDR = lParam
Select *pnmh\code
Case #LVN_ODCACHEHINT
result = 0
Case #LVN_GETDISPINFO
*pnmlvdi.NMLVDISPINFO = lParam
If *pnmlvdi\item\mask & #LVIF_TEXT
;... Item text is being requested
*pnmlvdi\item\pszText = @myItems(*pnmlvdi\item\iItem,*pnmlvdi\item\iSubItem)
EndIf
EndSelect
EndSelect
ProcedureReturn result
EndProcedure
If OpenWindow(0, 0, 0, 640, 300, "ListIconGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SetWindowCallback(@WinCallback())
List=ListIconGadget(#PB_Any,10,10,620,280,"ID",50,#LVS_OWNERDATA)
;... Set desired number of ListIconGadget items
SendMessage_(GadgetID(List), #LVM_SETITEMCOUNT, #ItemCount, #LVSICF_NOINVALIDATEALL)
AddGadgetColumn(List,2,"Name",100)
For i=0 To #ItemCount
myItems(i,0) = Str(i)
myItems(i,1) = "Name"+Str(i)
Next i
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Les éléments sont affichés à la demande via le callback.
Référence :
http://msdn.microsoft.com/en-us/library/bb774735(VS.85)
Re: ListIcon et LVS_OWNERDATA
Publié : mer. 18/août/2010 21:09
par nico
Merci Gnozal

Re: ListIcon et LVS_OWNERDATA
Publié : ven. 20/août/2010 14:19
par dayvid
Oui c'est pas mal car la au moins sa bug pas si ont ajoute trop de ligne
pourquoi sa fait sa au faite et pourquoi si une ligne est trop long et
bien elle est concaténé ?, ya t-il une solution a ce problème ?