[MFC] effectuer un retour à la ligne ds un EDITTEXT

effectuer un retour à la ligne ds un EDITTEXT [MFC] - C++ - Programmation

Marsh Posté le 06-08-2006 à 20:03:46    

Bonjour !
   Bon comme annoncé dans le titre j'ai un petit soucis : je n'arrive pas a faire de retour a la ligne dans mon EDITTEXT.
 
Bon voilà mon fichier ressource : (sans les headers...)

Code :
  1. Boite DIALOG
  2.    60, 20, 180, 240
  3.    STYLE WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_POPUP
  4.    CAPTION "Boite..."
  5.    BEGIN
  6.       EDITTEXT IDE_EDIT_VUE, 6, 2, 166, 166, WS_VSCROLL | WS_DISABLED | ES_MULTILINE | ES_WANTRETURN
  7.   EDITTEXT IDE_EDIT_COMMANDES, 12, 190, 156, 12
  8.       DEFPUSHBUTTON "Ok", IDM_OK, 96, 210, 42, 12
  9.   PUSHBUTTON "Fermer", IDM_QUIT, 44, 210, 42, 12
  10.    END


 
Donc j'arrive a récupérer le texte tapé dans IDE_EDIT_COMMANDES et celui dans IDE_EDIT_VUE. je met le texte récupéré de IDE_EDIT_VUE dans la string sVue et le texte récupéré de IDE_EDIT_COMMANDES dans la tring sCommandes.
et je voulais faire ça :  

Code :
  1. sVue += '\n';
  2. sVue += sCommandes;


puis j'envois le message WM_SETTEXT a IDE_EDIT_VUE pour lui faire afficher le contenu de sVue. Seul problème : le retour a la ligne n'est pas pris en compte... mes deux chaines de caractères sont affichées bout à bout...
Vous ne sauriez pas par hazard d'où celà peut venir ?
 
Merci  :)


Message édité par Amonchakai le 06-08-2006 à 20:12:06
Reply

Marsh Posté le 06-08-2006 à 20:03:46   

Reply

Marsh Posté le 06-08-2006 à 20:47:34    

kikou, bon c'est encore moi !  :)  
Si ça peut vous aider voilà comment je récupère les différents textes :
 

Code :
  1. HWND hTexte, hCommande;
  2. std::string sVue, sCommandes;
  3. hTexte = GetDlgItem(hwnd, IDE_EDIT_VUE);
  4. hCommande = GetDlgItem(hwnd, IDE_EDIT_COMMANDES);
  5. DWORD longueur = GetWindowTextLength(hCommande);
  6. char *buffer = new char[longueur+1];
  7. GetWindowText(hCommande, buffer, longueur+1);
  8. sCommandes = buffer;
  9. delete[] buffer;
  10. longueur = GetWindowTextLength(hTexte);
  11. buffer = new char[longueur+1];
  12. GetWindowText(hTexte, buffer, longueur+1);
  13. sVue = buffer;
  14. delete[] buffer;
  15. sVue += '\n';
  16. sVue += sCommandes;
  17. SendMessage(hTexte, WM_SETTEXT, 0, (LPARAM)sVue.data());
  18. SendMessage(hCommande, WM_SETTEXT, 0,(LPARAM) "" );


 
Merci a ceux qui se pencheront sur mon problème :)


Message édité par Amonchakai le 06-08-2006 à 20:48:13
Reply

Marsh Posté le 07-08-2006 à 10:18:53    

Essaye avec \r\n.

Reply

Marsh Posté le 07-08-2006 à 11:06:36    

Merci de ta réponse !!!
 
Bon alors c'est pas encore tout a fait ça... car maintenant il saute carrement une ligne. Et si j'en met qu'un des deux alors les deux chaines restent attachées...

Reply

Marsh Posté le 08-08-2006 à 10:11:35    

up

Reply

Marsh Posté le 08-08-2006 à 10:14:58    

y'a une option multiline, elle est bien activée ?

Reply

Marsh Posté le 08-08-2006 à 10:28:43    

Oui je l'ai bien activé ! comme on peut le voir dans mon fichier ressource.
 
il y avait Retrox qui m'avait proposé d'essayé de faire "\r\n" mais là ça fesait plus qu'un retour a la ligne ça en sautait même une...
 
(je sais bien que c'est super bête comme question : les caractères spéciaux c'est la première chose que l'on apprend... Mais là je vois pas...)
 
Merci

Reply

Marsh Posté le 08-08-2006 à 11:09:02    

Bon, j'ai réussit a faire ce que je voulais en faisant "\n\r"...
Mais je comprend pas pourquoi ça ça marche et pas '\n' ? '\r' c'est le retour charriot... pourquoi a-t-on besoin de le mettre ? (d'habitude en DOS juste le '\n' suffit...)
 
Merci :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed