je fais des essais avec la virtualTable des gadgets
Plusieurs questions:
1) PB appelle les fonctions à l'aide du pointeur *VirtualTable.GadgetFunctions, mais comment fait PB pour les fonctions qui ne sont pas dans cette structure (GadgetFunctions) ? Je n'ai rien vu dans le fichier PureBasic library descriptor.txt
C'est directement à partir des librairies comme pour les lib utilisateur ? sans que cela soit tenu dans une table ?
2) D'après quelques essais, si une fonction de la virtualTable n'existe pas, sa valeur est à 0 , c'est toujours vrai ?
exemple pour explorerListGadget qui n'a pas de commande SetGadgetItemState
3) CustomData et CustomData2 sont parfois utilisés parfois non, quel type de valeur est stocké dans ces long ? il y a une règle ou ça dépend des gadgets ? Par exemple pour l'explorerlistgadget, les 2 valeurs sont utilisées mais CustomData n'est pas utilisé pour les listiconGadget
4) comment ajouter de nouveaux gadgets dans cette Virtualtable ?
Je pense qu'il serait bien d'ajouter à la fin de la structure GadgetStructure un élément indiquant le type de gadget car pour plusieurs gadgets, le nom de la classe est indentique et il n'est pas forcément simple de retrouver le type de gadget à partir de l'ID static (j'ai déjà discuté de ça avec toi il y a quelque temps)
Code : Tout sélectionner
Structure PB_GadgetStructure
Gadget.l ; OS Gadget pointer (HWND)
*VirtualTable.GadgetFunctions
CustomData.l ; Can be used to store extra infos on this gadget
CustomData2.l ; Can be used to store extra infos on this gadget
GadgetType.l ; le type de gadget de la liste des gadgets
EndStructure
Code : Tout sélectionner
Enumeration
#PB_ButtonGadget = 1
#PB_ButtonImageGadget
#PB_CalendarGadget
#PB_CheckBoxGadget
#PB_ComboBoxGadget
#PB_ContainerGadget
#PB_DateGadget
#PB_EditorGadget
#PB_ExplorerComboGadget
#PB_ExplorerListGadget
#PB_ExplorerTreeGadget
#PB_Frame3DGadget
#PB_HyperLinkGadget
#PB_ImageGadget
#PB_IPAddressGadget
#PB_ListIconGadget
#PB_ListViewGadget
#PB_MDIGadget
#PB_OptionGadget
#PB_PanelGadget
#PB_ProgressBar
#PB_ProgressBarGadget
#PB_ScrollAreaGadget
#PB_ScrollBarGadget
#PB_SpinGadget
#PB_SplitterGadget
#PB_StringGadget
#PB_TextGadget
#PB_TrackBarGadget
#PB_TreeGadget
#PB_WebGadget
EndEnumeration