Dans un programme je récupère une valeur entrée par l'utilisateur avec GetDlgItemText, la stocke dans un dword puis je convertis cette chaine en décimale. Pour cela j'utilise wsprintf en lui passant comme format "%d". Cela marche très bien si la chaine entrée ne dépasse pas 4 caractères, par contre si il y a plus de 4 caractères seule la valeur décimale des quatre premiers caractères est retenue. J'imagine que c'est normal puisque la valeur est stockée dans un dword.
Voiçi mon code:
- Code: Tout sélectionner
.data?
chaine dd ?
.data
bufferDec db 32 dup(?)
formatDec db "%d", 0
...
...
invoke GetDlgItemText, hWin, IDC_IN, addr chaine, 256
invoke wsprintf, addr bufferDec, addr formatDec, chaine
invoke SetDlgItemText, hWin, IDC_OUT, addr bufferDec
J'aimerais donc pouvoir afficher la valeur décimale quelque soit la taille de la chaine saisie. Il faudrait que je puisse la stocker dans une variable plus grande qu'un dword mais je ne sais pas comment faire; Si quelqu'un a une idée je suis preneur.
Merci