Cela me semblait inutile de donner plus de détails, car là on entre dans la partie cachée de l'iceberg, mais si vous y tenez :
Alors, on commence par
GUIRegisterMsg qui est une fonction qui permet d'utiliser une
callback sur les messages Windows.
En l’occurrence, le message Windows utilisé est : WM_COMMAND
Mais vous pouvez déterminer celui que vous voulez en consultant cette liste :
Codes des Messages Windows
Ensuite, afin de connaitre les valeurs de retour de la commande utilisée, allez chez notre ami Bill et utilisez le moteur de recherche intégré :
http://msdn.microsoft.com
Ce qui nous donne pour WM_COMMAND :
http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Dans la section Remarks, vous avez un tableau avec les valeurs de retour possible. En consultant l'élément utilisé dans notre cas (un contrôle input), on peut lire sur la ligne Control :
► Afficher le texte
Code : Tout sélectionner
----------------------------------------------------------------------------------------------------------------
| Message Source | wParam (high word) | wParam (low word) | lParam |
----------------------------------------------------------------------------------------------------------------
| Control | Control-defined notification code | Control identifier | Handle to the control window |
----------------------------------------------------------------------------------------------------------------
Pour notre cas, nous retiendrons que :
wParam
(high word) = Control-defined notification code
wParam
(low word) = Control identifier
Comme ces deux paramètres (
Control-defined notification code et
Control identifier) sont dans la valeur de retour de wParam, il va falloir les séparer !!!
BitShift($wParam, 16) permet donc de récupérer le low word de wParam (l'ID du contrôle), alors que
BitAND($wParam, 0x0000FFFF) permet de récupérer le high word de wParam et donc le code de notification Windows.
* Juste au cas ou vous chercheriez encore la petite bête en ce qui concerne wParam, low word et high word, je rajouterais :
lParam est de type DWORD (double word) qui est un entier non signé de 32 bits.
La ligne :
BitShift($wParam, 16) extrait le WORD inférieur
La ligne :
BitAND($wParam, 0x0000FFFF) extrait le WORD supérieur
WORD - Un word est simplement 2 bytes ensemble, soit 16 bits. Un Word
peut avoir une valeur maximale de 0FFFFh (soit 65535d, ou h veut dire "en
hexadécimal", et d "en décimal").
DOUBLE WORD - Syntaxe DWORD: Un DWORD consiste en deux WORD
ensemble, soit un maximum de 32 bits. Valeur maximale = 0FFFFFFFFh (ou
encore 4294967295d).
Voilà, j'espère vous avoir bien malaxé les neurones et que cette journée vous soit comme un jour de révélation ... hihihi
.