Je n'y arrive pas...

J'ai beau essayer avec DWL_USER et GWL_USERDATA, c'est toujours sans succès.
Je déclare globalement la structure suivante :
typedef struct {
int i; // C'est juste pour le test !
} MASTRUCTURE , *LPMASTRUCTURE;
Je crée ma structure (globale) :
MASTRUCTURE mastructure;
Je crée ma fenêtre (dans une fonction) :
HWND hWnd = CreateWindowEx(...);
J'initialise la variable de ma structure :
mastructure.i = 9; // Par exemple
Je transmet la structure à la fenêtre :
SetWindowLong( hWnd , DWL_USER , (LONG)&mastructure );
Puis, dans la procédure de gestion des messages de ma fenêtre, je charge le pointeur de la structure transmise :
MASTRUCTURE *mastructure;
mastructure = (MASTRUCTURE *)GetWindowLong ( hwnd , DWL_USER );
Enfin, j'affiche une MessageBox (debug ;p) :
char Debug[1];
_itoa((int)&mastructure->i,(char*)Debug,10);
MessageBox(NULL,(LPCTSTR)Debug,"Debug",MB_OK);
Et là, normalement, un 9 devrais sortir.
Mais pas là ! C'est un 4 qui sort.
Y'aurait-il un rapport avec le nombre d'octets mis à disposition pour DWL_USER ?
Y'a-t-il une (des) erreur(s) de pointeur(s) ?
Là je sèche... mais je persévère !