Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/09/2006, à 00:27

Lknight

[résolu] wxDialog + wxID_CANCEL

Bonsoir,

Alors voilà mon problème :
J'ai un wxDialog que j'appelle de la facon suivante :
MonDlg *dlg=new MonDlg();
if (dlg->ShowModal()==wxID_CANCEL) return;
else {
    ...some code to do...
    dlg->Destroy();
}

L'ennui mainenant, j'ai beau ne pas appuyer sur le bouton wxID_CANCEL il ne rentre pas dans le else mais effectue comme si j'avais appuyer sur le bouton annuler correspondant à l'ID wxID_CANCEL et si je fais à la place du code ci-dessus :
MonDlg *dlg=new MonDlg();
dlg->ShowModal();
...some code to do...
dlg->Destroy();

j'ai beau appuyer sur le wxID_CANCEL il n'annule rien et continue, ce qui est somme toute normal.
Ce qui l'est moins c'est le comportement du premier bout de code.

On dirait qu'il ignore que j'ai un autre bouton avec un événement :-/ et dans le cas du second code, il fait abstraction de mon bouton annuler.

Quelqu'un aurais une idée ? C'est le seul bug persistant de mon app :-s

Merci d'avance.

Dernière modification par Lknight (Le 04/09/2006, à 17:16)


- LK -
-------------------------------------------------------
DAMNED!  Why is it always 42 !!
I hate this fucking calculator!

Hors ligne

#2 Le 04/09/2006, à 08:42

mccricri

Re : [résolu] wxDialog + wxID_CANCEL

Ben si tu cliques sur "Cancel", il fait la première condition du if, donc il ne rentre pas dans le else. ça me parait évident.

En plus, ton premier code me semble avoir un problème de gestion "mémoire", puisque si "cancel", il fait "return". Or le dlg->Destroy() est plus loin dans le code, ce qui veut dire que ta Dialog n'est jamais "détruite".

Moi j'aurai plutôt fait :

if(dlg->ShowModal() !=wxID_CANCEL){
    ...some code to do...
    // Faire le travail si pas cliqué sur "cancel"
}
// Toujours libérer la dialog
dlg->Destroy();

Hors ligne

#3 Le 04/09/2006, à 17:15

Lknight

Re : [résolu] wxDialog + wxID_CANCEL

c'est bon j'ai trouvé, je devais mettre EndModal(valeur) puis tester si la valeur recue par ShowModal étais ou non celle lancée par EndModal dans la boite appelée. wink


- LK -
-------------------------------------------------------
DAMNED!  Why is it always 42 !!
I hate this fucking calculator!

Hors ligne