Supprimer une ligne d'un EditBox

Résolu
aztcaLISS Messages postés 91 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 25 avril 2008 - 27 juil. 2007 à 17:37
aztcaLISS Messages postés 91 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 25 avril 2008 - 27 juil. 2007 à 20:28
Salut,


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


merci

azt

5 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
27 juil. 2007 à 18:47
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)"");
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 juil. 2007 à 20:11
13 + 10 pour retour charriot, 2 octets.

ciao...
BruNews, MVP VC++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
27 juil. 2007 à 17:52
Aucun.

ciao...
BruNews, MVP VC++
0
aztcaLISS Messages postés 91 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 25 avril 2008
27 juil. 2007 à 20:04
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aztcaLISS Messages postés 91 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 25 avril 2008
27 juil. 2007 à 20:28
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
0
Rejoignez-nous