2009-12-21 4 views
3

Dans mon application GUI Win32 C++ J'ai un dialogue avec un contrôle d'édition créée à partir d'un modèle de dialogue:contrôle d'édition Win32 multiligne perd le retour chariot sur SetWindowText()

EDITTEXT IDC_EDIT_Id, X, Y, W, H, 
    ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | WS_VSCROLL 

Chaque fois que je le texte multiligne entrée manuellement avec des retours chariot et appelez GetWindowText() le texte extrait est divisé en lignes avec CR et LF caractères comme prévu. Cependant lorsque j'essaie de remettre le même texte dans le contrôle d'édition avec SetWindowText() le contrôle affiche ce texte comme une seule chaîne. Pourquoi présente-t-il un tel comportement et comment contourner ce problème?

Répondre

5

Lorsque vous remettez le texte à l'aide de SetWindowText, assurez-vous que vous utilisez \ r \ n pour vos retours à la ligne.

Fonctionne bien pour moi.

Cela permet d'afficher le texte sur 2 lignes:

GetDlgItem(IDC_EDIT1)->SetWindowText(_T("Hello\r\nWorld!")); 

Bonjour
monde!

Cela permet d'afficher le texte sur la ligne 1:

GetDlgItem(IDC_EDIT1)->SetWindowText(_T("Hello\nWorld!")); 

HelloWorld!

+0

Oui, c'était ça. Maintenant, je normalise comme suit: d'abord remplacer tout "\ n" par "", puis tout "\ r" avec "\ r \ n". Merci beaucoup. – sharptooth

Questions connexes