Salut, finalement j'ai à nouveau le net ^^
donc je m'excuse d'avoir demandé une réponse rapide lol
pour la barre d'outils, ca ne marche pas (surement à coz du gadgetID())
pour l'autre, ca fonctionne, mais la solution que j'ai trouvée sur codearchive convient mieux, comme à la base la hauteur de l'onglet devait me servir à trouver la taille "intérieure" du panel...
avec tout ca j'ai même réussi à oublier la seule question pour laquelle je n'ai pas encore de réponse, à savoir : comment connaitre la taille d'une barre de statut ?
Autre gros probleme :
(attention, ceux qui ont l'habitude de ne rien comprendre à ce que je dis, s'abstenir)
- -Mon gadget panel correspond pour chaque onglet à un fichier
-Je voudrais afficher dans chaque onglet l'icone du fichier
-Pour l'icone j'utilise la fonction de Regis (simlpe et efficace)
-J'ai pour ca cherché sur codearchiv (un peu trouvé par hasard) de quoi faire
-J'ai trouvé une solution mais à chaque ouverture de fichier ce sont tous les onglets qui prennent l'icone
J'ai isolé cette partie du code, pour en faire une petite source d'exemple, j'ai à peine modifié les fonction trouvées sur codearchiv
Code : Tout sélectionner
Procedure GetFileSmallIconID(Location.s)
Protected Info.SHFILEINFO
SHGetFileInfo_(Location, 0, @Info, SizeOf(SHFILEINFO), #SHGFI_ICON|#SHGFI_SMALLICON)
ProcedureReturn Info\hIcon
EndProcedure
Procedure PanelImageEnabled(PanelGadget.l, MaxOnglets.l)
Protected hImgList.l
;Sous XP ça plante (Envoyer le rapport, pas méchant)
;Pour tester sous XP faut virer les 3 lignes d'en dessous
If OSVersion() = #PB_OS_Windows_XP
ProcedureReturn #FALSE
EndIf
If hImgList=0
hImgList = ImageList_Create_(16, 16, #ILC_COLOR32|#ILC_MASK, MaxOnglets, MaxOnglets)
EndIf
If hImgList
SendMessage_(GadgetID(PanelGadget), #TCM_SETIMAGELIST, 0, hImgList)
ProcedureReturn #TRUE
EndIf
ProcedureReturn #FALSE
EndProcedure
Procedure SetPanelImage(PanelGadget.l, Position.l, ImageID.l)
Protected hImgList.l, pItem.TC_ITEM, ID.l
ID = GadgetID(PanelGadget)
hImgList = SendMessage_(ID, #TCM_GETIMAGELIST, 0, 0)
pItem\mask = #TCIF_IMAGE
SendMessage_(ID, #TCM_GETITEM, Position, @pItem)
If pItem\iImage = 0
;PB ne reconnait pas ImageList_AddIcon_ :(
;De toute façon ça fonctionne sans...
;pItem\iImage = ImageList_AddIcon_(hImgList, ImageID)
Else
pItem\iImage = ImageList_ReplaceIcon_(hImgList, pItem\iImage, ImageID)
EndIf
SendMessage_(ID, #TCM_SETITEM, Position, @pItem)
EndProcedure
If OpenWindow(0, 0, 0, 400, 400, #PB_Window_SystemMenu, "")
If CreateGadgetList(WindowID(0))
PanelGadget(0, 0, 0, 400, 370)
CloseGadgetList()
EndIf
hMenu = CreateMenu(0, WindowID(0))
If hMenu
MenuTitle("Menu")
MenuItem(0, "Ouvrir")
MenuItem(1, "Fermer")
EndIf
#MaxOnglets = 3
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Menu
MenuID = EventMenuID()
If MenuID=0
Fichier$ = OpenFileRequester("", "", "Tout (*.*)|*.*", 0)
If OpenFile(0, Fichier$)
CloseFile(0)
AddGadgetItem(0, -1, GetFilePart(Fichier$))
;Si on ouvre un fichier on met dans l'onglet
;l'icône correspondante, ca en jette un max ^^
If PanelImageEnabled(0, #MaxOnglets)
IconID.l = GetFileSmallIconID(Fichier$)
Num.l = CountGadgetItems(0)-1
SetPanelImage(0, Num, IconID)
EndIf
Else
MessageRequester("", "Impossible d'ouvrir le fichier", 16)
EndIf
Else
Num = GetGadgetState(0)
If Num>=0
RemoveGadgetItem(0, Num)
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
Dri