Page 1 sur 1
IsGadget et GadgetID
Publié : ven. 05/août/2005 19:06
par Anonyme2
IsGadget retourne une valeur différente de 0 si le gadget est initialisé.
Il serait très pratique (pour moi) que IsGadget retourne le GadgetID si l'objet est correctement initialisé ou sinon 0
Publié : ven. 05/août/2005 19:25
par Fred
En fait IsGadget() (comme toutes les fonctions IsXX()) fait mieux que ca, il retourne l'adresse de la structure associée à l'objet. Celle du gadget est comme ca:
Code : Tout sélectionner
Structure PB_Gadget
Handle.l
VT.l
Data1.l
Data2.l
EndStructure
(elle sont decritent dans le SDK). Donc pour toi tu peux acceder facilement au handle si tu le souhaites.
Publié : ven. 05/août/2005 20:40
par Dr. Dri
Très bon à savoir! Moi qui galérait avec les toolbar et les menus! J'aais fait la même requête pour les toolbar mais sans réponse. Là c'est encore mieux !
Dri

Publié : ven. 05/août/2005 21:08
par Oliv
Fred a écrit :En fait IsGadget() (comme toutes les fonctions IsXX()) fait mieux que ca, il retourne l'adresse de la structure associée à l'objet. Celle du gadget est comme ca:
Code : Tout sélectionner
Structure PB_Gadget
Handle.l
VT.l
Data1.l
Data2.l
EndStructure
(elle sont decritent dans le SDK). Donc pour toi tu peux acceder facilement au handle si tu le souhaites.
Il serait utile de le préciser dans l'aide

Publié : ven. 05/août/2005 22:50
par Dr. Dri
Fred a écrit :(elle sont decritent dans le SDK). Donc pour toi tu peux acceder facilement au handle si tu le souhaites.
Elles sont pas dans l'aide mais bon elles sont dans la doc apparament...
PureBasic library descriptor.txt a écrit : -----------------------------------------------------------------------
Gadget (Langage: ASM)
------
_PB_Gadget_ObjectsNumber
_PB_Gadget_ObjectsArea
_PB_Gadget_CurrentObject ; Represents the actual GadgetList. There isn't current gadget.
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
EndStructure
Structure GadgetFunctions
FreeGadget
GetGadgetState
SetGadgetState
GetGadgetText
SetGadgetText
AddGadgetItem
AddGadgetItem2
RemoveGadgetItem
ClearGadgetItemList
ResizeGadget
CountGadgetItems
GetGadgetItemState
SetGadgetItemState
GetGadgetItemText
SetGadgetItemText
OpenGadgetList2
GadgetX
GadgetY
GadgetWidth
GadgetHeight
HideGadget
EndStructure
Ce serait bien du chm (ou du html) pour les (longs) fichiers texte comme celui là... Ca permetrait de bien s'y retrouver ^^
Dri
Publié : ven. 05/août/2005 22:59
par Dr. Dri
D'ailleurs en fouillant plus loin j'ai trouvé ca :
-----------------------------------------------------------------------
Menu (Langage: ASM)
----
_PB_Menu_ObjectsNumber
_PB_Menu_ObjectsArea
_PB_Menu_Current ; Current
Structure PB_GadgetStructure
Menu.l ; OS Menu pointer (HMENU)
Window.l ; OS Window pointer on which the menu has been created (HWINDOW)
EndStructure
Ce qui prouve que c'est aussi laborieux à écrire qu'à lire...
Dri
Publié : sam. 06/août/2005 6:23
par Anonyme2
Fred a écrit :En fait IsGadget() (comme toutes les fonctions IsXX()) fait mieux que ca, il retourne l'adresse de la structure associée à l'objet. Celle du gadget est comme ca:
Code : Tout sélectionner
Structure PB_Gadget
Handle.l
VT.l
Data1.l
Data2.l
EndStructure
(elle sont decritent dans le SDK). Donc pour toi tu peux acceder facilement au handle si tu le souhaites.
Merci Fred, j'ai juste à écrire ma petite procedure qui va bien
as-tu regardé ce post ?
http://purebasic.hmt-forum.com/viewtopic.php?t=3285
Publié : sam. 06/août/2005 18:31
par Anonyme2
Pour ceux que ça intéresse, voici une commande qui s'appelle
IsGadgetID(#Gadget) et qui retourne 0 si le gadget n'est pas initialisé sinon elle retourne GadgetID(#Gadget), en une seule commande
voici le code asm
Code : Tout sélectionner
format MS COFF
public PB_IsGadgetID
extrn _PB_IsGadget@4
section '.text' code readable executable
PB_IsGadgetID:
PUSH eax ; ID static
CALL _PB_IsGadget@4
TEST eax,eax
JZ _Retour
MOV eax, [eax]
_Retour:
RET
et le contenu du fichier descripteur qui va avec
Code : Tout sélectionner
; Langage utilisé pour coder la librairie ASM ou C
ASM
; Nombre de Dll windows utilisées par la lib
0
; Type de librairie
LIB
; Nombre de librairies PureBasic utilisé par la librairie
1
GadgetExtension
; Nom du fichier d'aide de notre libraire, OBLIGATOIRE !
IsGadgetID.chm
; Enumération des nouvelles fonctions crées
IsGadgetID, Long, ()
Long
et voici le lien de cette mini librairie appelée Divers, à mettre dans le dossier PureBasic\PureLibraries\UserLibraries
c'est ici