EM_GETLINE

Résolu
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 14 juil. 2004 à 18:13
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 14 juil. 2004 à 19:36
Je dois utiliser le message EM_GETLINE pour récupérrer une ligne d'un Rich Edit.

Pour lParam, la MSDN dit
"Pointer to the buffer that receives a copy of the line. Before sending the message, set the first word of this buffer to the size, in TCHARs, of the buffer. For ANSI text, this is the number of bytes; for Unicode text, this is the number of characters. The size in the first word is overwritten by the copied line."

Si j'ai bien compris, il s'agit de mettre la taille du tampon dans le premier mot, mais je ne vois pas exactement comment faire (dois-je mettre le poids fort en premier ou en deuxieme?). Par exemple pour une taille de 258 je dois mettre 2 et 1. Lequel à 1 et lequel à 2?
Est-ce qu'un sprintf serait satisfaisant?

Merci

17 réponses

BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
14 juil. 2004 à 18:44
char szbuff[204];
*((WORD*) szbuff) = 264; // ceci a chaque tour

ciao...
BruNews, Admin CS, MVP Visual C++
3
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 juil. 2004 à 18:38
c'est quoi le premier word? les 32 premiers bits ou 1 octet ?
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
14 juil. 2004 à 18:42
Me semble avoir deja fait un exemple en reponse a question identique. A verifier.

ciao...
BruNews, Admin CS, MVP Visual C++
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
14 juil. 2004 à 18:45
264 partout bien entendu....

ciao...
BruNews, Admin CS, MVP Visual C++
0

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

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 juil. 2004 à 18:48
donc les 32 premiers bits
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
14 juil. 2004 à 18:52
WORD c'est 16 bits.
ciao...
BruNews, Admin CS, MVP Visual C++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
14 juil. 2004 à 18:55
Merci
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 juil. 2004 à 18:59
16 bits ? word = mot ==> mot processeur = 32bits proco 32bits, j'aurais bien cru, alors dword c'est 32 bits
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
14 juil. 2004 à 19:02
tu as tout compris, sauf que mot = 16 bits, c'est comme ca
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
14 juil. 2004 à 19:15
Quand je vous dis que faut faire de l'asm, vous auriez trouve cela normal.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 juil. 2004 à 19:21
c'est pas les histoires de registre ca, 2*16bits ?
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
14 juil. 2004 à 19:25
exact !!!
registre 32 se decompose en 2 word et partie basse en 2 bytes.
pas de decomp pour la partie haute, faut un shift.

ciao...
BruNews, Admin CS, MVP Visual C++
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
14 juil. 2004 à 19:26
Je savais qu'un WORD c'était 2 octets
Par contre pour le *((WORD*) szbuff) = 264; c'est vrai que l'asm doit servir, en gros c'est un WORD PTR, c'est ca?
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 juil. 2004 à 19:28
cast szbuff en WORD* et defference pour affecter 264
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 juil. 2004 à 19:30
pour moi c'est normal, c'est du c, et utiliser sscanf et sprintf c'est antilogique et detourné
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
14 juil. 2004 à 19:34
Excusez les mini coupures du site, on fiat des modif au fur et a mesure qu'on constate les defauts.

*((WORD*) szbuff) = 264;
est le genre d'instruction que le compilo va transposer en asm direct:
mov word ptr [szbuff], 264
1 cycle et parallelisable avec suivant ou precedent donc 1/2 en realite.

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
14 juil. 2004 à 19:36
ok
0