IsGadget et GadgetID

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

IsGadget et GadgetID

Message 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
Fred
Site Admin
Messages : 2809
Inscription : mer. 21/janv./2004 11:03

Message 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.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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 :D
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message 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 :oops:
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message 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
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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 :D

as-tu regardé ce post ?
http://purebasic.hmt-forum.com/viewtopic.php?t=3285
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
Répondre