Control tab, erreur etrange

Le
DarK
Bonjour à tous,

J'explique mon probleme :

J'ai crée un tab principal qui contient deux autres tab. Un dispose
d'un controle static que j'utilise pas encore mais il est présent dans
la fenêtre, et l'autre contient un control edit qui servira comme bar
de recherche et un control listBox pour afficher les résultats de la
recherche.

Pour détecter le changement d'onglet, j'intercepte le message
WM_NOTIFY, je copie les valeurs de lParam dans une structure NMHDR et
ensuite je sais quel onglets(tabs) a été sélectionné grâce à la=
valeur
de la variable nmhdr->code.

Seulement voilà quand je clique dans ma barre de recherche OU dans mon
listBox et qu'après je change d'onglets dans mon tab principal une
erreur se produit du genre "Ce programme a effectue une opération non
conforme et doit s'arreter".

J'insiste bien sur le fait que ce soit le tab qui contient la barre de
recherche et le listBox qui est concerné par l'erreur, quand je clique
sur l'autre tab (celui qui contient le control static) et qu'apres je
change d'onglet dans le tab principal il n'y a aucun problème
apparament.

Mais ce qui est étrange c'est que le debugger de codeBlocks me dit que
l'erreur se produit a la ligne ou je test ma variable nmhdr->code pour
savoir si le tab qui contient le control static a été selectionné,
alors que ce tab là ne cause aucune erreur..

Et j'ai remarqué qu'en recopiant la valeur de lParam dans la structure
nmhdr il ny a plus aucune erreur..

Si quelqun pouvait me renseigner la dessus Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
alain
Le #18514311
DarK wrote:
Bonjour à tous,

J'explique mon probleme :

J'ai crée un tab principal qui contient deux autres tab. Un dispose
d'un controle static que j'utilise pas encore mais il est présent dans
la fenêtre, et l'autre contient un control edit qui servira comme bar
de recherche et un control listBox pour afficher les résultats de la
recherche.

Pour détecter le changement d'onglet, j'intercepte le message
WM_NOTIFY, je copie les valeurs de lParam dans une structure NMHDR et
ensuite je sais quel onglets(tabs) a été sélectionné grâce à la valeur
de la variable nmhdr->code.



Tu "copies" ?
Normalement tu dois juste caster sur NMHDR*
et ensuite détecter TCN_SELCHANGE
DarK
Le #18514451
On 28 jan, 18:58, alain
DarK wrote:
> Bonjour à tous,

> J'explique mon probleme :

> J'ai crée un tab principal qui contient deux autres tab. Un dispose
> d'un controle static que j'utilise pas encore mais il est présent dan s
> la fenêtre, et l'autre contient un control edit qui servira comme bar
> de recherche et un control listBox pour afficher les résultats de la
> recherche.

> Pour détecter le changement d'onglet, j'intercepte le message
> WM_NOTIFY, je copie les valeurs de lParam dans une structure NMHDR et
> ensuite je sais quel onglets(tabs) a été sélectionné grâce à la valeur
> de la variable nmhdr->code.

Tu "copies" ?
Normalement tu dois juste caster sur NMHDR*
et ensuite détecter TCN_SELCHANGE



Quand je dis je copie, je fais :
nmhdr = (LPNMHDR)lParam

Et ensuite pour tester je fais :
if(nmhdr->code == tabX)

Est ce comme ça ?
alain
Le #18515111
DarK wrote:

Quand je dis je copie, je fais :
nmhdr = (LPNMHDR)lParam

Et ensuite pour tester je fais :
if(nmhdr->code == tabX)

Est ce comme ça ?



Oui, ça c'est bon.
Il doit y avoir un truc non initialisé ou un dépassement mémoire ailleurs..
DarK
Le #18515491
On 28 jan, 19:54, alain
DarK wrote:
> Quand je dis je copie, je fais :
> nmhdr = (LPNMHDR)lParam

> Et ensuite pour tester je fais :
> if(nmhdr->code == tabX)

> Est ce comme ça ?

Oui, ça c'est bon.
Il doit y avoir un truc non initialisé ou un dépassement mémoire ai lleurs..



Enfaite quand je remet nmhdr = (LPNMHDR) lParam avant chaque test il
n'y a pas de problème.

Mais j'aurais bien aimé comprendre pourquoi, enfin bon merci quand
même :)
Publicité
Poster une réponse
Anonyme