changer les charactères en cours de saisie dans un CEdit
Bonjour,
J'ai une classe qui hérite de CEdit (CEditEx). Je voudrais pouvoir au fur et à mesure de la frappe, vérifier que les charactères entrés par l'utilisateurs sont corrects et les formater.
L'utilisateur est censé entrer une chaine de BYTES. Ceci implique que les charactères autre que ceux de 0 à 9 et de A à F sont interdits. (J'autorise également l'utilisation de "backspace" et "space"). En surchargeant la méthode OnChar de CEdit comme si dessous, j'arrive à empêcher l'écriture de "mauvais charactères"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| void CEditEx::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if( (nChar<'a' || nChar>'f') &&
(nChar<'A' || nChar>'F') &&
(nChar<'0' || nChar>'9') &&
(nChar!=8) && //backspace
(nChar!=32) ) //space
{
return;
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
} |
J'en arrive à mon problème :
je voudrais désormais que tous les deux charactères un espace soit ajouté automatiquement pour que le texte soit joli :
en gros avoir ça : 21 FE 00 etc...
au lieu de : 21FE00 etc
Avant de créer ma fonction qui ajoute les espaces j'ai effectué la fonction de test suivant qui, selon moi, devrait ajouter le charactère 'b' à ma chaine si le charactère ajouté est 'a':
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| void CEditEx::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
if( (nChar<'a' || nChar>'f') &&
(nChar<'A' || nChar>'F') &&
(nChar<'0' || nChar>'9') &&
(nChar!=8) && //backspace
(nChar!=32) ) //space
{
return;
}
if (nChar == 'a')
{
CEdit::OnChar('b', nRepCnt, nFlags);//ligne ajoutée!!!!!!!!!
}
CEdit::OnChar(nChar, nRepCnt, nFlags);
} |
Au final, si je tape un charactère autre que a, il s'affiche comme précédemment, mais si je tape a, la chaine ajoutée n'est pas :
"ba" comme je l'escomptais,
mais :
"aa"
Je ne comprends pas pourquoi. Si une bonne âme pouvait m'aider.
[ Modéré par BigBoomShakala ] - Réactivation des BBcode
Merci de les laisser activer afin que les balises fassent leur office