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 :D

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 ?