spin button - C++ - Programmation
Marsh Posté le 12-11-2005 à 21:23:25
65535?
Problème de décrémentation d'une valeur non signée?
-1 devient 65535 en non signé.
Je chercherai de ce côté là.
Je me souviens plus très bien (j'utilise très peu le spin button) mais ne faut il pas utiliser la macro DDX_MinMaxInt() sur le champ associé au spin ?
Hum encore plus simple : je ne me souviens pas qu'il faille intercepter les événements du contrôle.
Bref fait un tour dans la MSDN parce que là je pense qu'il y a embrouille.
Marsh Posté le 12-11-2005 à 21:39:23
Pour ce qui de la valeur 65535 j'y ai pensé, mais bon pas vu pourquoi car j'ai bien initialiser ma variable a 1.
Pour ce qui est de la macro DDX_MinMaxInt() je la connaissait pas (1er fois que j'utilise le boutton spin) mais merci je vais chercher par la.
"je ne me souviens pas qu'il faille intercepter les événements du contrôle."
Désolé mais je vois pas trop ce que tu veut dire.
Marsh Posté le 13-11-2005 à 18:01:18
tafid a écrit : "je ne me souviens pas qu'il faille intercepter les événements du contrôle." |
Ca veut dire que le code suivant est à mon avis parfaitement inutile:
Code :
|
Bon regarde la MSDN. J'utilise très peu le spin button.
Je te conseille aussi vivement de regarder le système d'échange (DDX - Dialog Data eXchange) et de validation (DDV - Dialog Data Validation) des MFC.
Marsh Posté le 13-11-2005 à 21:30:41
Ok merci je vais voir ça.
Je connaissai pas DDX - Dialog Data eXchange et DDV - Dialog Data Validation ( je commence en c++).
Marsh Posté le 10-03-2006 à 16:27:24
Salut a toi
pour ton probleme de débordement, il faut que tu utilise la syntaxe suivante:
m_val= (short) spin->GetPos();
J'ai aussi eu ce pb.
voila
Marsh Posté le 10-03-2006 à 19:32:35
Ah bah merci en plus ça tombe pile poile vu que je vais devoir le re utiliser dans un programme merci a toi et puis j'avais laissé ça de coté).
ca marche nickel merci.
Par contre j'ai toujours un problème au niveau de l'incrementation qui déconne.
On gros ça donne ça lorsque je clique sur la fleche pour incrementer 0->1->2->3->4-> et la clique sur la flèche pour décrémenter->5->4->3->2......
Marsh Posté le 12-11-2005 à 21:02:49
Salut a tous.
Voilà j'ai un petit prob (en fait 2).
J'utilise un boutton spin pour incrementer ou diminuer une variable, j'usque la ça marche mais je rencontre 2 problemes :
Le 1er lorsque je clique sur le boutton spin la valeur passe directement à 65535 alors que je l'ai bin initialisé à 1.
Le second je peut incrementer ou decrementer la variable mais si j'increment puis décrement la decrement tation ne se fait pas tout de suite.
Ex si j'ai la valeur 10 et que je l'increment elle passe bien à 11 puis si je clique sur le boutton pour decrementer la valeur augmente (et inversement) et si clique a nouveau elle diminue comme il faut.
Je suis sous visual C++ 6.0
Désolé de pas etre plus clair pour le 2e pb mais je vois pas trop comment expliquer le pb.
Voila le code
void CListeDlg:: OnDeltaposSpin1(NMHDR* pNMHDR, LRESULT* pResult) //fonction associé au bouton spin
{
NM_UPDOWN* pNMUpDown = (NM_UPDOWN*)pNMHDR;
m_val=1; // valeur a afficher dans une edit box
CSpinButtonCtrl *spin=(CSpinButtonCtrl*) GetDlgItem(IDC_SPIN); //recuperation de la valeur
spin->SetRange(1,256); //defini la plage utilisable
m_val=spin->GetPos();
m_val=m_val-65536; // pour corriger le probleme n°1 mais bon c'est temporaire
UpdateData(false);
}
D'avance merci pour vos réponses (et encore désolé si certaines de mes explications sont obscures).