ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 20133 29 déc. 2005 à 00:50
Salut !
Je n'ai pas regarder ces fonction, et je n'ai pas tester ce code, mais ... Je ne comprend pas pourquoi tu as été forcé d'utiliser un pointeur sur DIALOG. Si dlg est une structure DIALOG, &dlg est son adresse et donc un pointeur -> SetWindowLong(tmphwnd, GWL_USERDATA, (long) &dlg);
Le travail c'est la santé, ne rien faire c'est la préservé !!!
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 29 déc. 2005 à 11:40
Ben en fait je suis obligé de passer par NEW et DELETE de maniere a
pouvoir le memoriser, en fait je sous-classe plusieurs dialogs a la
chaine par la meme procedure et dans la windproc (identique pour tout
les dialog aussi) avec getwindowlong() je peux recuperer le pointeur
pour pouvoir bosser, si je fait avec &dlg a la fin de la fonction
il sera libéré donc irecuperable dans la windproc.
Je ne peux pas non plus utiliser static.
Et NEW ne donne qu'un pointeur, c'est la mon probleme.
ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 20133 29 déc. 2005 à 16:31
Ah ok.
Du coup tu mélange le new et le malloc, pourquoi ne pas conservé le new ?
dlg->id=(DATADIAG*) malloc(100*sizeof(DATADIAG));
dlg->id = new DATADIAG[100]; //delete[] dlg->id;
Qu'est-ce que tu veut dire par "new ne donne qu'un poiteur" ? ou est le probleme ? il donne un poiteur et une zone, c donc exactement la meme chose qu'une variable classique.
Le travail c'est la santé, ne rien faire c'est la préservé !!!
SnOOpss
Messages postés571Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 5 décembre 2013 29 déc. 2005 à 18:56
Ben en fait le probleme c'est que si je travaille avec dlg.id aucun probleme mais avec dlg->id ca plante.
en fait si je met
typedef struct DIALOG
{
DATADIAG tab[100]
}
avec le deboggeur je voit bien tab[1].state tab[2].state tab[3].state
la probleme c'est que la valeur 100 n'est pas fixe elle est definie au
moment de la creation
LPDIALOG dlg = new DIALOG;
voila pourquoi je fait avec malloc
si je fait
typedef struct DIALOG
{
DATADIAG *tab;
}
tab = new DATADIAG tab[100]
dans mon debogueur je ne voit QUE tab.state (au lieu de tab[1].state)
Vous n’avez pas trouvé la réponse que vous recherchez ?
ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 20133 29 déc. 2005 à 22:16
Lol oki, content que tu ai trouver ton problème. Au passage, je ne sais pas ce que tu utilise comme debugguer, mais il est générallement possible de regarer une "expression" ainsi il te montre tab[0].state puisque c'est le premier de la liste et qu'il ne peut pas connaitre le nombre d'element du tableau. Mais tu peux lui specifier de regarder l'expression "tab[15].state". Sous VC++ ca s'appelle les "espions".
Voila, bonne continuation @++
Le travail c'est la santé, ne rien faire c'est la préservé !!!