Handle <--> ID

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Handle <--> ID

Message par Kwai chang caine »

Bonjour à tous

Je m'y paume entre le Handle et le ID :?
J'ai cherché dans le forum français, il me semble bien qu'on en parlait quelque part, mais j'ai pas trouvé :oops:

Quand on fait :

Code : Tout sélectionner

HwndGadget = ComboBoxGadget(#PB_Any, 50, 30 , 90, 300)
Le HwndGadget c'est bien le handle de window ? :roll:
celui qu'on utilise dans les API, si j'ai bien compris, ou bien c'est un numéro qui est attribué par PB.

Bon, si c'est le handle de window, alors à quoi sert "GadgetID" ??

Est ce que ces deux codes sont identiques:

Code : Tout sélectionner

HwndGadget = ComboBoxGadget(#PB_Any, 50, 30 , 90, 300)
Est égal à :

Code : Tout sélectionner

ComboBoxGadget(#Combo, 50, 30 , 90, 300)
HwndGadget  = GadgetID(#Combo)
Et si oui, quelle est la fonction inverse

Code : Tout sélectionner

IdCombo = ????(HwndGadget)
Je vous remercie de vos exaircissements
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Si #PB_Any est utilisé, la fonction retourne le numéro de gadget et pas le handle windows. Sinon, c'est le handle windows qui est retourné.
Purebasic.chm a écrit :The functions that create a new gadget return the new gadget number (called #Gadget in this library) if #PB_Any was used to create the gadget. If a static number was given to identify the gadget instead of #PB_Any, then the functions return the OS identifier for the created Gadget.
La fonction 'inverse' de GadgetID() est GetDlgCtrlID_().
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

HwndGadget = ComboBoxGadget(#PB_Any, 50, 30 , 90, 300)
Dans ce cas HwndGadget est l'ID du gadget car tu as mis #PB_Any


Mais si tu fais:
HwndGadget = ComboBoxGadget(10, 50, 30 , 90, 300)
Là HwndGadget est le handle de la fenêtre

HwndGadget = GadgetID(#Combo)
Pour obtenir l'ID à partie de l'handle , il faut utiliser une API:
Id=GetDlgCtrlID_(HwndGadget)


Le handle est renvoyé par Window lors de la création d'une fenêtre parent ou enfant, il est unique.

L'ID est un numéro d'identification que tu fournis pour la création d'une fenêtre enfant seulement, tu dois faire en sorte qu'il soit unique pour tous les gadgets d'une même fenêtre.

Lorsque tu reçois un évènement, par exemple pour des controls ce sera #WM_COMMAND, l'id te sera renvoyé ce qui te permettra de déterminer sur quel control à eu lieu l'action.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

C'est toi qui crée l'ID, (même si t'en as pas beaucoup, des idées), et c'est le système qui crée le Handle. :lol:
RV
Messages : 209
Inscription : sam. 18/nov./2006 15:16

Message par RV »

Chris a écrit :(même si t'en as pas beaucoup, des idées)
Bah si Chris, Kwai n'a QUE ça...des idées! :lol: :D :) :oops: 8)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Tout d'abord, merci beaucoup à tous de votre aide 8)
ça fait chaud au coeur.
Je vois que j'ai bien fait de poser la question, j'etais encore dans la choucroute, comme dab. :oops:
C'est toi qui crée l'ID, (même si t'en as pas beaucoup, des idées), et c'est le système qui crée le Handle.
Plus ça va, plus j'tadore CHRIS :D
Bah si Chris, Kwai n'a QUE ça...des idées!
Mon bon RV, tu as mis dans le mille 8)
Si j'avais autant de talent que d'idées, avec PB je ferais "PT" la banque :D
Heureusement que j'ai mes amis pour m'aider 8) c'est à dire vous tous (meme CHRIS si si :wink:).
Mais y'a plein de fois ou je me retiens de vous parler de mes idées.
D'ailleurs ça me fait penser qui faut que je vous demande "aut'chose", tout de suite aprés dans la rubrique "générale".

@NICO
Merci de ton explication détaillée, comme tu sais bien faire.
Professeur tu aurais du etre 8)

Donc si, j'ai bien compris, un miracle est toujours possible :roll:
Le Handle et l'ID sont deux choses differentes, d'accord (Fixed :D )
Bon, mais l'ID ça viens de Pure ou de windows ?
HwndGadget = ComboBoxGadget(#PB_Any, 50, 30 , 90, 300)
Dans ce cas HwndGadget est l'ID du gadget car tu as mis #PB_Any
Je suppose que ça viens de pure, en partant de cette idée, HwndGadget n'est donc plus le handle, mais l'ID créé par PB.

@GNOZAL
Si #PB_Any est utilisé, la fonction retourne le numéro de gadget et pas le handle windows. Sinon, c'est le handle windows qui est retourné.
Exactement la meme chose que quand on met un "0", mais dans le cas ci-dessus, c'est PB qui en met un à ma place, et c'est pour ça qu'il a parfois 5 chiffres et qu'il ressemble à un handle ?
Donc, si je continue dans ce résonement HwndGadget est un ID donné au hasard par PB qui n'a rien à voir avec windows, et qui est donné au hasard comme quand on fait "Enumeration/EndEnumeration" ?
Le handle est renvoyé par Window lors de la création d'une fenêtre parent ou enfant, il est unique.
Donc cette phrase me met encore un doute, elle me laisserait à penser que les handles sont que pour les fenetres et les ID pour les gadgets, mais tous les deux donnés par windows :?

Il reste encore a eclaircir cette petite zone d'ombre dans mon esprit
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Kwai chang caine a écrit :Exactement la meme chose que quand on met un "0", mais dans le cas ci-dessus, c'est PB qui en met un à ma place, et c'est pour ça qu'il a parfois 5 chiffres et qu'il ressemble à un handle ?
Oui.
A mon avis, le nombre est élevé pour éviter les collisions avec les numéros de gadgets statiques (0, 1, 2, ...).
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

D'accord, merci GNOZAL.
Depuis 3 ans que je "code" :lol: , eh bah comme je voyais un grand chiffre dans ma tete c'etait un handle. :roll:

Donc ce chiffre n'a rien a voir avec windows, mais c'est PB qui le donne
Répondre