Page 1 sur 1
Pour les fana de l'API Win32
Publié : jeu. 17/mars/2005 6:17
par cederavic
Voilas 3 petites fonctions qui permete de récuperer les valeur "LoWord" et "HiWord" pour LParam et WParam (lors de l'utilisation de SendMessage_() par exemple) et une derniere pour qui fait l'inverse :
Code : Tout sélectionner
Procedure MakeParam(LoWord, HiWord)
param & $ffff + LoWord
param + HiWord << 16
ProcedureReturn param
EndProcedure
Procedure GetLoWord(param)
ProcedureReturn param & $ffff
EndProcedure
Procedure GetHiWord(param)
ProcedureReturn param >> 16
EndProcedure
Publié : lun. 21/mars/2005 21:23
par bernard13
merci bien mais je comprend pas
Publié : lun. 21/mars/2005 22:11
par Torp
bernard13 a écrit :merci bien mais je comprend pas
Parler pour rien dire... Bernard c'est pas possible, tu prends des cours du soir!
Publié : mar. 22/mars/2005 12:32
par nico
@bernard13,
Un mot de 32 bits peut servir à renvoyer plusieurs valeurs, par exemple deux valeurs de 16 bits. Donc pour cela on va décomposer le mot de 32 bits avec les 16 bits de valeurs hautes (hi-word) et les 16 bits de valeurs basses (lo-word), on a au final 2 mots de 16 bits qui donne 2 words.
Pour récupérer les 16 bits de poids fort (hi-word) on va effectuer une rotation des bits, en fait un décalage sur 16 bits. au final les 16 bits de poids fort se retrouvent être les 16 bits de poids faible maintenant et des zéros ont remplacés les bits de poids fort.
Pour récupérer les 16 bits de poids faible (lo-word) on va effectuer un ET logique avec un masque car ici on veut supprimer la lecture des 16 premier bits. Le masque sera de cette valeur (en binaire):
00000000000000001111111111111111
ce qui donne en hexa:
$ffff
Les 16 premiers bits additionnés auront la valeur 0 tandis que les valeurs suivantes conserveront leurs données.
Publié : mar. 22/mars/2005 16:29
par Pingtix

Euh...
Publié : mar. 22/mars/2005 21:10
par cederavic
En claire, une valeur 32 Bit peut contenir 2 valeur 16 bit (la premiere sur les 16 premiers bits et la 2eme sur les 16 derniers). Mes 3 procédures permettent de recuperer la "premiere" et "deuxieme" valeur et de faire l'inverse (mettre une premiere valeur sur les 16 premier bits et une deuxieme sur les 16 derniers). En gros, c'est comme si la valeur 32 bit etait une boite avec 2 compartiments...