Supprimer une ligne d'un EditBox

[Résolu]
Signaler
Messages postés
91
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 avril 2008
-
Messages postés
91
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 avril 2008
-
Salut,


Existe-t-il un message ou une fonction permettant d'enlever une ligne d'un EditBox multiline.


merci

azt

5 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,

Tu peux faire comme ceci en envoyant 4 messages:

// Définir le numéro de ligne à supprimer:
int ligne=2;
// Obtenir l'index du premier caractère de la ligne:
int index1=SendMessage(hwndedit,EM_LINEINDEX,ligne,0);
// Obtenir l'index du premier caractère de la ligne suivante:
int index2=SendMessage(hwndedit,EM_LINEINDEX,ligne+1,0);
// Sélectionner les caractères inclus entre les deux index:
SendMessage(hwndedit,EM_SETSEL,index1,index2);
// Effacer la selection, donc la ligne choisie:
SendMessage(hwndedit,EM_REPLACESEL ,0,(LPARAM)"");
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
13 + 10 pour retour charriot, 2 octets.

ciao...
BruNews, MVP VC++
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Aucun.

ciao...
BruNews, MVP VC++
Messages postés
91
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 avril 2008

merci pour vos reponses.


J'ai essayé ton code racpp et ca fonctionne tres bien. Merci.

Et maintenant si je veux inserer une ligne, je suppose qu'il n'y a probablement aucun message ni fonction qui puisse le faire.

J'ai modifier ta fonction racpp pour inserer une nouvelle ligne. Ca semble fonctionner sauf pour le saut de ligne. Je croyais qu'en appelant ma fonction comme ceci: InsertLine(hEdit, 3, "test") j'aurais vu une nouvelle ligne apparaitre. Je vois le "test" apparaitre mais suivit d'un carré et de ce qui avait deja sur la ligne 3. Un retour de chariot est bien le code 13 (0x0D)?

Voici la fonction:


void InsertLine(HWND hEdit,
int iLineNum,
char sText[])


{



int
iTextLen = strlen(sText);




char
* pText =

new



char
[iTextLen+2];



memcpy(pText, sText, iTextLen);


pText[iTextLen] = 0x0D;//Ajouter le retour de chariot.



pText[iTextLen+1] = 0x00;




//Ajouter le caractere de fin de chaine.






int
index = SendMessage(hEdit, EM_LINEINDEX, iLineNum, 0);SendMessage(hEdit, EM_SETSEL, index, index);

SendMessage(hEdit, EM_REPLACESEL ,0 , (LPARAM)pText);

delete pText;

}



Avez-vous une idée ou une meilleure idée que celle-ci?
merci

azt
Messages postés
91
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 avril 2008

Bon ca fonctionner merci


voici le code pour ceux que ca pourrait intéresser:



void



InsertLine(HWND hEdit,

int
iLineNum,

char
sText[]){


int
iTextLen = strlen(sText);


char
* pText =

new



char
[iTextLen+3];memcpy(pText, sText, iTextLen);

pText[iTextLen] = 0X0D;

pText[iTextLen+1] = 0x0A;


//Ajouter le retour de chariot.

pText[iTextLen+2] = 0x00;




//Ajouter le caractere de fin de chaine.






int
index = SendMessage(hEdit, EM_LINEINDEX, iLineNum, 0);SendMessage(hEdit, EM_SETSEL, index, index);

SendMessage(hEdit, EM_REPLACESEL ,0 , (LPARAM)pText);


delete
pText;}





azt