Salut Fred,
voici un exemple , tu compiles avec les thèmes activés sinon cela ne marche pas.
Unicode ou non c'est pareil.
La structure 
LVTILEVIEWINFO comme je l'ai déclaré, si je met 
Align #PB_Structure_AlignC cela ne donne pas le résultat attendu en x64. Soit c'est ma déclaration qui est fausse soit Align #PB_Structure_AlignC ne convient pas.
Pour moi la déclaration est conforme à la doc en ligne
J'ai lu des remarques sur la doc en ligne MS qui ne serait pas à jour mais je ne sais pas. Je n'ai pas de compilateur C / C++ pour effectuer des contrôles sur les structures, j'ai passé des heures la-dessus et ça me fatigue.
C'est pour cela que je demandais si vous aviez un outils pour importer les structures depuis les fichiers .h
Normalement, l'exemple n'affiche pas les colonnes mais pour chaque élément il y a l'icône, le nom, le type de fichier, la taille et la date/heure, chaque info sur une ligne différente  (c'est comme dans l'explorateur windows en mode mosaïque)
Voilà le genre de problème pour la conversion en x64.
L'idéal ne serait pas d'avoir toutes les déclarations des structures en PB mais un outils capable (executable) d'importer ces structures depuis les fichiers de déclaration.
Code : Tout sélectionner
;// les macros  MS en PB
Macro ListView_SetTileInfo(Hwnd, LVTILEINFO)
      SendMessage_(Hwnd, #LVM_SETTILEINFO, 0, LVTILEINFO)
EndMacro
Macro ListView_SetTileViewInfo(Hwnd, TILEVIEWINFO)
      SendMessage_(Hwnd, #LVM_SETTILEVIEWINFO, 0, TILEVIEWINFO)
EndMacro
;//  Structure LVTILEINFO site MS  (C++)
;//  http://msdn.microsoft.com/en-us/library/windows/desktop/bb774766%28v=vs.85%29.aspx
; typedef struct LVTILEINFO {
;   UINT  cbSize;
;   int   iItem;
;   UINT  cColumns;
;   PUINT puColumns;
; #if (_WIN32_WINNT >= 0x0600)
;   int   *piColFmt;
; #endif
; } LVTILEINFO, *PLVTILEINFO;
Structure LVTILEINFO Align #PB_Structure_AlignC
      cbSize.l
      iItem.l
      cColumns.l
      *puColumns
      *piColFmt
EndStructure
;//  Structure LVTILEVIEWINFO site MS  (C++)
;//  http://msdn.microsoft.com/en-us/library/windows/desktop/bb774768%28v=vs.85%29.aspx
; typedef struct LVTILEVIEWINFO {
;   UINT  cbSize;
;   DWORD dwMask;
;   DWORD dwFlags;
;   SIZE  sizeTile;
;   int   cLines;
;   RECT  rcLabelMargin;
;   } LVTILEVIEWINFO, *PLVTILEVIEWINFO
Structure LVTILEVIEWINFO ;Align #PB_Structure_AlignC
      cbSize.l
      dwMask.l
      dwFlags.l
      sizeTile.size
      cLines.l
      rcLabelMargin.rect
EndStructure
Define .i
Global GLB_event
;// mémorise les données pour afficher en mosaique le nombre de subitems voulus
Global GLB_tvi.LVTILEVIEWINFO
;//  morise les données pour indiquer à la listicon que l'on va utiliser les infos de subitems
Global GLB_ti.LVTILEINFO
;// variable mémorisant les différents champs du fichier courant
Global GLB_info.SHFILEINFO
Global  Path$ = "C:\"
;// l'ordre des colonnes de l'explorerlist
Enumeration 0
      #Colonne_Noms
      #Colonne_Attributs
      #Colonne_taille
      #Colonne_Type
      #Colonne_date
EndEnumeration
;// utilisé par les listicon pour le mode mosaique
#LVTVIF_AUTOSIZE = 0
#LVTVIM_COLUMNS = 2
#LVTVIM_LABELMARGIN = 4
#Listicon = 0
CoInitializeEx_(0, #COINIT_APARTMENTTHREADED|#COINIT_SPEED_OVER_MEMORY)
;// xp mini pour comctl32.dll version 6.00 mini
If OSVersion() < #PB_OS_Windows_XP
      MessageRequester("Erreur", "Windows XP minimum est nécessaire",  #PB_MessageRequester_Ok)
      CoUninitialize_()
      End
EndIf
;// les thèmes doivent être actifs
If OpenWindow(0, 0,0, 980, 670, "ListIconGadget", #PB_Window_MaximizeGadget| #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
      ListIconGadget(#Listicon, 0, 0, WindowWidth(0), WindowHeight(0)-30, "Noms", WindowWidth(0)/3)
      AddGadgetColumn(#Listicon, 1, "Attributs", GadgetWidth(#Listicon)/6*0.6)    ;// Attributs
      AddGadgetColumn(#Listicon, 2, "Taille", GadgetWidth(#Listicon)/6*0.9)       ;// Taille
      AddGadgetColumn(#Listicon, 3, "Type", GadgetWidth(#Listicon)/6)             ;// Type
      AddGadgetColumn(#Listicon, 4, "Date", 0)                                    ;// Date
      SendMessage_(GadgetID(#Listicon), #LVM_SETCOLUMNWIDTH, 4, #LVSCW_AUTOSIZE_USEHEADER)
      
      ;// active le mode d'affichage mosaïque (Tile) pour la listicon
      SendMessage_(GadgetID(#Listicon), #LVM_SETVIEW, #LV_VIEW_TILE, 0)
      
      ;// variables initialisées pour afficher les subitems en mode mosaique Explorerlist
      GLB_tvi\cbSize = SizeOf(LVTILEVIEWINFO)
      GLB_tvi\dwFlags = #LVTVIF_AUTOSIZE  ;// redimensionne automatiquement
      GLB_tvi\dwMask = #LVTVIM_COLUMNS ;| #LVTVIM_LABELMARGIN
      ;// nombre de ligne à  àjouter en fait que 3 mais ca permet d'augmenter la taille du rectangle
      GLB_tvi\cLines = 4
      
      GLB_ti\cbSize = SizeOf(LVTILEINFO)
      ;// Indique l'ordre des 3 colonnes à afficher, la 4eme à -1 pour que MS définisse de la place pour 4 colonne
      GLB_ti\cColumns = GLB_tvi\cLines
      GLB_ti\puColumns = ?OrdreColonneAfficher
      
      ListView_SETTILEVIEWINFO(GadgetID(#Listicon), @GLB_tvi)
      If ExamineDirectory(0, Path$, "*.*")
            While NextDirectoryEntry(0)
                  If DirectoryEntryType(0) = #PB_DirectoryEntry_File
                        FileNameOnly$ = DirectoryEntryName(0)
                        SHGetFileInfo = SHGetFileInfo_(Path$ + FileNameOnly$, 0, @info.SHFILEINFO, SizeOf(SHFILEINFO), #SHGFI_ICON|#SHGFI_LARGEICON|#SHGFI_TYPENAME|#SHGFI_ATTRIBUTES)
                        Attributs = DirectoryEntryAttributes(0)
                        
                        attributs$ = " "
                        
                        If  Attributs & (#PB_FileSystem_Archive|#PB_FileSystem_Compressed)
                              attributs$ = "A"
                        EndIf
                        
                        If  Attributs & #PB_FileSystem_Normal
                              attributs$ + "N"
                        EndIf
                        
                        If  Attributs & #PB_FileSystem_ReadOnly
                              attributs$ + "R"
                        EndIf
                        
                        If  Attributs & #PB_FileSystem_System
                              attributs$ + "S"
                        EndIf
                        
                        taille$ = Str((DirectoryEntrySize(0)>> 10)+ Bool(((DirectoryEntrySize(0)%1024)))) + " Ko"
                        
                        ;// FR
                        date$ = FormatDate("%dd/%mm/%yyyy  %hh:%ii:%ss", DirectoryEntryDate(0, #PB_Date_Modified))
                        
                        If SHGetFileInfo
                              GLB_ti\iItem = i
                              AddGadgetItem(#Listicon, -1, FileNameOnly$ + Chr(10) + attributs$ + Chr(10) + taille$ + Chr(10) + PeekS(@info\szTypeName[0]) + Chr(10) + date$+Times$, info\hIcon)
                              ListView_SetTileInfo(GadgetID(#Listicon), @GLB_ti)
                              DestroyIcon_(info\hIcon)
                        Else
                              type$ = "?"
                              GLB_ti\iItem = i
                              AddGadgetItem(#Listicon, -1, FileNameOnly$ + Chr(10) + attributs$ + Chr(10) + taille$ + Chr(10) + type$+ Chr(10) + date$+Times$)
                              ListView_SetTileInfo(GadgetID(#Listicon), @GLB_ti)
                        EndIf
                        i+1
                        
                  EndIf
            Wend
            FinishDirectory(0)
      EndIf
EndIf
Repeat
      GLB_event = WaitWindowEvent()
Until GLB_event = #PB_Event_CloseWindow
CoUninitialize_()
DataSection   ;// utilisé pour afficher l'ordre des colonne en mode mosaique
      OrdreColonneAfficher:
      Data.l #Colonne_Type, #Colonne_taille, #Colonne_date, -1
EndDataSection
End