* * *    
Главная » Статьи » Код PB

Просмотров: 1698 | Дата: 25.04.2024 | Коментарии (0)

Ассоциация иконок


Code
Structure Info  
  Part.s ; Расширение файла  
  IconID.l ; Идентификатор иконки, связанной с расширением  
EndStructure  

Global NewList Part_IconID.Info()  
AddElement(Part_IconID() )

Procedure.s GetSysDirectory() ; Путь к системной папке
  Path.s=Space(500)
  GetSystemDirectory_(@Path,500)
  ProcedureReturn Path
EndProcedure
   
Part_IconID()\Part="dir" ; Это иконка папки  
Part_IconID()\IconID=ExtractIcon_(0,GetSysDirectory()+"\SHELL32.dll",3)  

Procedure GetExtension_Icon(Extension.s, size.l)  
  Protected Info.SHFILEINFO, StandardIcon.l, flags.l  
   
  StandardIcon = 0  
   
  If Size = 0  
  flags = #SHGFI_USEFILEATTRIBUTES | #SHGFI_ICON | #SHGFI_SMALLICON  
  Else  
  flags = #SHGFI_USEFILEATTRIBUTES | #SHGFI_ICON | #SHGFI_LARGEICON  
  EndIf  
   
  If SHGetFileInfo_("." + extension, #FILE_ATTRIBUTE_NORMAL, @Info.SHFILEINFO, SizeOf(SHFILEINFO), flags)  
  StandardIcon = Info\hIcon  
  Else  
  If Size = 0  
  ExtractIconEx_("shell32.dll", 0, 0, @StandardIcon, 1)  
  Else  
  ExtractIconEx_("shell32.dll", 0, @StandardIcon, 0, 1)  
  EndIf  
  EndIf  
   
  ProcedureReturn StandardIcon  
EndProcedure  

Procedure GetIcon(Part.s)  
  Shared Part_IconID()  
   
  Part=LCase(Part)  
   
  ForEach Part_IconID()  
  If Part=Part_IconID()\Part ; Данные о расширенни найдены  
  ProcedureReturn Part_IconID()\IconID  
  EndIf  
  Next  
   
  ; Данных о расширении нет, поэтому загружаем иконку  
  IconID=GetExtension_Icon(Part, 0)  
  AddElement(Part_IconID() )  
  Part_IconID()\Part=Part  
  Part_IconID()\IconID=IconID  

ProcedureReturn IconID  
EndProcedure  

If OpenWindow(0, 100, 100, 300, 140, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  ListIconGadget(0, 5, 5, 290, 130, "Name", 100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
  AddGadgetItem(0, -1, "Папка", GetIcon("dir") )
  AddGadgetItem(0, -1, "rar", GetIcon("rar") )
  AddGadgetItem(0, -1, "txt", GetIcon("txt") )
  AddGadgetItem(0, -1, "pb", GetIcon("pb") )
  AddGadgetItem(0, -1, "картинка", GetIcon("jpg") )
  Repeat
  Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow
  EndIf










Сайт посвящён языку программирования PureBasic — коммерческий компилятор языка программирования, использующего синтаксис BASIC. Предназначен для создания кроссплатформенных приложений для AmigaOS, Linux, Microsoft Windows, Windows NT и Mac OS X. Разработан компанией Fantaisie Software.