Newsgroup: it.comp.lang.visual-basic
Titolo: Associare l'imagelist di sistema ad una ListView.

Ciao,
avrei bisogno di creare una ListView contenente l'elenco di alcuni file
sparsi (non nella stessa cartella).
Fino ad ora ho recuperato l'icona con la SHGetFileInfo e l'ho inserita
un una ImageList associata alla LV.
Nel MSDN si legge:
SHGFI_ICON
"Retrieve the handle to the icon that represents the file and the index
of the icon within the system image list. The handle is copied to the
hIcon member of the structure specified by psfi, and the index is copied
to the iIcon member. The return value is the handle to the system image
list."
Quindi...c'è un modo per associare la ImageList di sistema ad una LV?
Oppure, c'è un altro modo per fare quello che sto facendo!?
Tnx!
Daniele.
-- 
Free As In Freedom
www.fsf.org
http://blog.libero.it/LeleB/

 wrote in message
news:F%Rpf.10060$
eD5.1...@twister2.libero.it

Non sono certo di aver capito se intendi una cosa simile:
Type LVITEM
    mask As LVITEM_Mask
    iItem As Long
    iSubItem As Long
    state As LVITEM_States
    stateMask As LVITEM_States
    pszText As Long     '// LPCSTR
    cchTextMax As Long
    iImage As Long
    lParam As Long
    iIndent As Long
End Type
'// ShGetFileInfo() flags
Public Const SHGFI_ICON = &H100                         '  get icon
Public Const SHGFI_DISPLAYNAME = &H200                  '  get display
name
Public Const SHGFI_TYPENAME = &H400                     '  get Public
Type name
Public Const SHGFI_ATTRIBUTES = &H800                   '  get
attributes
Public Const SHGFI_ICONLOCATION = &H1000                '  get icon
location
Public Const SHGFI_EXETYPE = &H2000                     '  return exe
Public Type
Public Const SHGFI_SYSICONINDEX = &H4000                '  get system
icon index
Public Const SHGFI_LINKOVERLAY = &H8000                 '  put a link
overlay on icon
Public Const SHGFI_SELECTED = &H10000                   '  show icon in
selected state
Public Const SHGFI_LARGEICON = &H0                      '  get large
icon
Public Const SHGFI_SMALLICON = &H1                      '  get small
icon
Public Const SHGFI_OPENICON = &H2                       '  get open icon
Public Const SHGFI_SHELLICONSIZE = &H4                  '  get shell
size icon
Public Const SHGFI_PIDL = &H8                           '  pszPath is a
pidl
Public Const SHGFI_USEFILEATTRIBUTES = &H10             '  use passed
dwFileAttribute
Public Enum LVITEM_Mask
    LVIF_TEXT = &H1
    LVIF_IMAGE = &H2
    LVIF_PARAM = &H4
    LVIF_STATE = &H8
    LVIF_INDENT = &H10
    LVIF_NORECOMPUTE = &H800
End Enum
Dim hImlSys As Long           '//   HANDLE dell'ICONA puntata dal File
Dim lpshfi As SHFILEINFO      '//   Questa è la struttura Standard
Dim lplvi As LVITEM
'//   Nel caso la LIST_VIEW NON sia associata alla IMAGE_LIST
'//   si appoggia alla struttura "lpshfi" nella quale sala
'//   il riferimento all'ICONA per passarlo alla STRUTTURA LVITEM
Call SHGetFileInfo(fullPath, _
                   0, lpshfi, Len(lpshfi), _
                   SHGFI_DISPLAYNAME Or _
                   SHGFI_TYPENAME Or _
                   SHGFI_SYSICONINDEX)
 
lplvi.iItem = lIndex
lplvi.Mask = LVIF_TEXT Or LVIF_IMAGE
lplvi.pszText = cbxStrPtr(NomeFile)
lplvi.iImage = lpshfi.iIcon
' Questa è la funzione che inserisce l'ICONA che ti
' allego sotto
Call m_lv.InsertItem(lplvi)
Public Function InsertItem(ByRef ulvi As LVITEM) As Long
 
    InsertItem = SendMessage(m_hWnd, LVM_INSERTITEM, 0, ulvi)
End Function
Public Function cbxStrPtr(ByRef Data As String) As Long
    If Len(Data) Then _
       cbxStrPtr = CharNextA(Data) - 1
End Function
Scusa la confusione ma ho dovuto estrarre il tutto da un'insieme
di Classi e moduli che uso per Wrappare la Dll direttamente senza
usare l'OCX.
Se non funziona ed hai Access ti posso indicare un Demo in Access_XP
nel quale uso questa tecnica in modo abbastanza intuitivo....!
Ciao
@Alex
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 nel quale uso questa tecnica in modo abbastanza intuitivo....!
Perchè no! :)
Tnx a lot!
Daniele


 Daniele
http://www.mantuanet.it/alessandro.baraldi/
Alla Sezione [API]--> [Controlli Avanzati]
2.12 Explorer(DEMO) è completamente OPEN-SOURCE
