ListIcon et LVS_OWNERDATA

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

ListIcon et LVS_OWNERDATA

Message 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! :)
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: ListIcon et LVS_OWNERDATA

Message 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)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: ListIcon et LVS_OWNERDATA

Message par nico »

Merci Gnozal :D
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: ListIcon et LVS_OWNERDATA

Message 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 ?
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Répondre