begin process at 2012 02 10 07:24:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

MFC

 > 

Edit Box


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Edit Box

mercredi 21 mai 2008 à 16:10:23 | Edit Box

iMouss

Salut tout le monde
J'ai une edit box contenant une variable membre : m_var de type CString
j'aimerais que lors de la saisie de l'utilisateur, il sa fasse un espacement automatique tout les deux caracteres
(s'il tape 123456, il faut que ça affiche 12 34 56)

J'espere que vous pourrez m'aider
Merci
mercredi 21 mai 2008 à 19:45:06 | Re : Edit Box

iMouss

Please un peu d'aide ceux qui savent
mercredi 21 mai 2008 à 20:20:19 | Re : Edit Box

BruNews

Administrateur CodeS-SourceS
Manque une info:
en cas de "123"
tu veux "1 23" ou "12 3" ?

Je pourrais te le faire sur du char[], je ne pratique pas le prémaché.

ciao...
BruNews, MVP VC++
mercredi 21 mai 2008 à 20:29:15 | Re : Edit Box

iMouss

je pensait que cétai assé préci comme cétait exposé en fait, sil tape 123 ca affiche "12 3".
si ça avait été "1 23" alors j'aurais pas dit "tout les deux caracteres" sachant que le premier ce serai retrouvé forcément seul...
mercredi 21 mai 2008 à 21:37:02 | Re : Edit Box

BruNews

Administrateur CodeS-SourceS

Ne le prends pas mal, ce n'est pas une attaque contre toi, bien au contraire.

"variable membre : m_var de type CString" et autres biniouteries de ce genre, tu crois vraiment que c'est avec toutes ces surcouches masquant le code que tu sauras te débrouiller en dev ?
Apprends à manier tableaux et pointeurs, entraine toi jusqu'à ce que ça devienne aussi naturel que de respirer et tu verras que tu n'auras plus jamais à poser ce type de question, ce sera résolu plus vite que de l'écrire.

Voila exemple sur une dialog avec 2 EDIT:

HWND htxt = 0, hres = 0;

void OnEdChange()
{
  char *pmem, *c, *d, a;
  DWORD len;
  SetWindowText(hres, 0);
  len = GetWindowTextLength(htxt);
  if(!len) return;
  pmem = HeapAlloc(GetProcessHeap(), 0, len + len / 2 + 1);
  if(!pmem) return;
  c = pmem; // POINTEUR SUR DEBUT DU TEXT MIS EN FIN DE BUFFER
  if(len > 2) c += (len / 2);
  GetWindowText(htxt, c, len + 1);
  if(len < 3) goto okTXT;
  d = pmem; // POINTEUR DE REECRITURE
  len = 0;
  while(a = *c++) {
    if(++len > 2) {*d++ = 32; len = 1;}
    *d++ = a;
  }
  *d = 0;
okTXT:
  SetWindowText(hres, pmem);
  HeapFree(GetProcessHeap(), 0, pmem);
}

BOOL CALLBACK AppDlgProc(HWND hdlg, UINT mssg, WPARAM wParam, LPARAM lParam)
{
  switch(mssg) {
    case WM_INITDIALOG:
      SetClassLongPtr(hdlg, GCLP_HICON, (long)LoadIcon(0, IDI_APPLICATION));
      htxt = GetDlgItem(hdlg, IDED_TXT);
      hres = GetDlgItem(hdlg, IDED_RES);
      return 1;
    case WM_COMMAND:
      switch(wParam) {
        case 0x30003E9: // EN_CHANGE = 0x300, IDED_TXT = 1001
          OnEdChange();
          break;;
        case IDCANCEL: EndDialog(hdlg, 0);
      }
  }
  return 0;
}

et je te promets que je ne me suis pas abimé un neurone sur ce coup.
Il faut absolument t'y mettre, tu as tout à y gagner.

ciao...
BruNews, MVP VC++

jeudi 22 mai 2008 à 16:31:49 | Re : Edit Box

iMouss

Salut merci pour ta reponse,
Je n'ai pas bien examiné le code que tu m'a passé, mais j'aurai aimé savoir ce que fait ton code ou bien ce que tu ferais dans le principe plutot que de me preter un sympathique parchemin a dechifrer .
jeudi 22 mai 2008 à 18:47:35 | Re : Edit Box

BruNews

Administrateur CodeS-SourceS
Ce code fait précisément ce qui était demandé.
Au fur et à mesure que l'EDIT où on tape change, l'autre EDIT reçoit le texte formaté comme tu l'as demandé.

Je te mets le projet complet ici:
http://brunews.com/Separ.zip

ciao...
BruNews, MVP VC++
vendredi 23 mai 2008 à 11:56:21 | Re : Edit Box

iMouss

Ouille Ouille Ouille !
Merci encore, je viens de regarder plus ou moin en détail le code et ce qu'il faisait,
bon au passage je pense qu'au niveau des pointeurs je maitrise assez bien, je sais tres bien comment ils fonctionnent et je te remercie d'ailleur de tes conseils au cas ou je n'étais pas averti de leur utilisations;

Alors a ce que je vois tu a créé tou plein de pointeurs et utilisé l'allocation dynamique sur la pile  (où perso j'aurai utilisé un New pour sa performance et sa simplicité d'utilisation) pour pouvoir finalement placer des espaces entre les caracteres dans une autre editbox, ça je doit dire c la solution facile, mais malheuresement je ne peu pa fair ça :(

Bon sinon les binouterie du genre CString, elles masquent le code c vrai :S, mais elles sont bien plus pratique a l'utilisation.

voila le meme code sans pointeurs, sans allocations, sans trop de variable supplementaire, et en le lisant on croirai lire du francais tellment c explicite :

void OnEdChange()
{
    this->UpdateData();//vers variables
 
    int len=m_ATQA.GetLength();
    m_UID="";
    int i, j=2;
    if (len>2)
    {
        for (i=0; i<len; i++)
        {
            m_UID.Insert(j,m_ATQA.GetAt(i));
            if (i%2==1)    m_UID.Insert(j++," ");
            j++;
        }
    }
    else m_UID=m_ATQA;

    this->UpdateData(false);
}

Avec les pointeur fo kan mm s'assurer de pointer au bon endroi, toujours passé d'un pointeur a lautre pour recopier l'adresse et fair les traitments, enfin bon... on s'en sort plus.
Derrier ce code surment plein de cochoneries ki tournent et peu etre pas optimisé (meme si je pense qu'elles le sont quand meme un peu héhé), mé jsui pa a qq nanosecondes pres.

Je te dit merci encore pour ta solution, mais je vais continuer de chercher un pti peu.
Si quelqu'un a une idée n'hésitez pas.
vendredi 23 mai 2008 à 12:07:05 | Re : Edit Box

BruNews

Administrateur CodeS-SourceS
Dernière info:
'new' finit après moultes vérifs chez HeapAlloc (tout comme malloc), la ligne droite étant toujours le plus court chemin, on ne peut pas parler de 'performances de new' par rapport à un appel direct HeapAlloc.

ciao...
BruNews, MVP VC++
vendredi 23 mai 2008 à 12:07:05 | Re : Edit Box

BruNews

Administrateur CodeS-SourceS
Dernière info:
'new' finit après moultes vérifs chez HeapAlloc (tout comme malloc), la ligne droite étant toujours le plus court chemin, on ne peut pas parler de 'performances de new' par rapport à un appel direct HeapAlloc.

ciao...
BruNews, MVP VC++

1 2

Cette discussion est classée dans : box, edit


Répondre à ce message

Sujets en rapport avec ce message

[VC++] Modifier le texte d'une edit box sur plusieurs lignes... [ par ndj55 ] Salut à tous!Voila,je souhaiterais ecrire dans une edit box une chaine de caracteres,pour cela j'ai le code suivant:strcpy(info,"Prenom:\nNicolas\nAge [VC++] Comment vider une edit box? [ par ndj55 ] Salut!Je voudrais savoir comment je peux faire pour vider une edit box?Existe-t-il un message particulier???Merci d'avance! Une calculatrice en C++ sous windows [ par Juan-Marco ] Bonjour à tousVoila mon premier post sur ce forums Je connais bien les boucles, les variables et les structures. Je connais un peut moins les classes. Multiligne et edit box [ par Xs ] ca semble, a priori, trés simple de mettre le multiligne dans une edit box puisqu'il suffit de cocher l'option multligne dans VC++ 6.mais comment fait slider et edit box sous visual c++ [ par a-sophie ] j imagine que cela se fait facilement, mais je n arrive pas a faire communiquer un slider et une edit box.par ex le contenu de l edit box change en fo afficher ou ne pas afficher une edit box en fonction des circonstances [ par sangokhan ] Encore moi,Lorsque je selectionne un item ds ma listbox un commentaire correspondant a cet item doit apparaitre ds une edit bos situe pres de ma listb fichier textedans edit box [ par rodrigos ] Bonjour, je suis nouveau dans la programmation c++, et j'aimerai savoir comment afficher un fichier texte dans un dialog box.j'utilise cette fonctionS dialog box avec edit ? [ par pruv3750 ] salutJe travail avec visual studio .net, et j'aimerais savoir s'il existe une fonction pour affichier une boite de dialogue avec un edit box a l'inter Fonctions Visual C++ + [ par RaZoR ] Je suis en train de faire un programme et dedans il y a un Edit Box !! (dans lequel je met des resultats !!) Moi je voudrais savoir comment on fait po edit box et couleur [ par agriva ] Comment changer la couleur du texte s affichant dans un edit box (type CString)?Merci.@ude!


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,607 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales