J'ai cr=E9e un tab principal qui contient deux autres tab. Un dispose
d'un controle static que j'utilise pas encore mais il est pr=E9sent dans
la fen=EAtre, et l'autre contient un control edit qui servira comme bar
de recherche et un control listBox pour afficher les r=E9sultats de la
recherche.
Pour d=E9tecter 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 =E9t=E9 s=E9lectionn=E9 gr=E2ce =E0 la=
valeur
de la variable nmhdr->code.
Seulement voil=E0 quand je clique dans ma barre de recherche OU dans mon
listBox et qu'apr=E8s je change d'onglets dans mon tab principal une
erreur se produit du genre "Ce programme a effectue une op=E9ration 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=E9 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=E8me
apparament.
Mais ce qui est =E9trange 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 =E9t=E9 selectionn=E9,
alors que ce tab l=E0 ne cause aucune erreur..
Et j'ai remarqu=E9 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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 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 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
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
On 28 jan, 18:58, alain wrote:
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 ?
On 28 jan, 18:58, alain <al...@al.com> wrote:
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)
> 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
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 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..