Bug dans wxSpinCtrl sous Linux et pas Win !! - C++ - Programmation
MarshPosté le 05-04-2005 à 22:01:20
Hello,
J'ai un wxSpinCtrl auquel il y a un EVT_TEXT(id, func)
Dans func j'ai ceci:
Code :
wxString txt;
int val = bordert->GetValue();
txt.Printf("%d", val); //Transforme un int en wxString
wxLogMessage(txt);
Sur Windows à chaque fois que je clique sur une petite flèche du SpinCtrl, j'ai le wxLogMessage qui m'affiche la valeur qu'il y a dans le champ wxSpinCtrl.(logique)
Par contre sur Linux: quand je clique sur une petite flèche du SpinCtrl j'ai mon wxLogMessage qui m'affiche la valeur "0" (pas logique) puis la valeur qui se trouve dans le champ wxSpinCtrl (donc comme sur windows).
-A mon avis c'est un bug étant donné que le résultat n'est pas le même sur Linux que Windows. -Le problème: Si mon SpinCtrl est à 1 et que je clique sur la flèche pour décrémenter et bien mon programme plante... J'ai l'impression que mon bordert->GetValue ne me retourne pas un int dans ce cas...
J'ai esseyé ceci: if(isdigit(bordert->GetValue())){...} mais cette condition fait planter mon programme quand la valeur du bordert est cencé être à 0. J'ai entedu parler de try/catch, est-ce que ça peut résoudre mon problème ou alors ça n'a rien avoir ?
Marsh Posté le 05-04-2005 à 22:01:20
Hello,
J'ai un wxSpinCtrl auquel il y a un EVT_TEXT(id, func)
Dans func j'ai ceci:
Sur Windows à chaque fois que je clique sur une petite flèche du SpinCtrl, j'ai le wxLogMessage qui m'affiche la valeur qu'il y a dans le champ wxSpinCtrl.(logique)
Par contre sur Linux: quand je clique sur une petite flèche du SpinCtrl j'ai mon wxLogMessage qui m'affiche la valeur "0" (pas logique) puis la valeur qui se trouve dans le champ wxSpinCtrl (donc comme sur windows).
-A mon avis c'est un bug étant donné que le résultat n'est pas le même sur Linux que Windows.
-Le problème: Si mon SpinCtrl est à 1 et que je clique sur la flèche pour décrémenter et bien mon programme plante... J'ai l'impression que mon bordert->GetValue ne me retourne pas un int dans ce cas...
J'ai esseyé ceci: if(isdigit(bordert->GetValue())){...} mais cette condition fait planter mon programme quand la valeur du bordert est cencé être à 0.
J'ai entedu parler de try/catch, est-ce que ça peut résoudre mon problème ou alors ça n'a rien avoir ?
Merci...