shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013
-
7 déc. 2005 à 17:33
shadow1779
Messages postés706Date d'inscriptionmercredi 17 novembre 2004StatutMembreDernière intervention29 septembre 2013
-
8 déc. 2005 à 18:36
j'ai un petit probleme sur la fonction pour imprimer du texte, celui ci est bien imprimé mais le dernier caractere ne l'est pas et si il y a la touche entrée appuyé par exemple cela fait un carré au lieu de passer une ligne :s voici mon code, ou est le probleme :s
// Imprimer le contenu de l'Edit Box sur l'imprimante.
lenbloc = GetWindowTextLength(hEdit);
tampon = (LPSTR)GlobalAlloc(LMEM_FIXED, lenbloc + 1);
GetWindowText(hEdit,tampon,lenbloc);
// si on ne trouve pas de caractere dans la fenetre on stop la
if(lenbloc < 1)
{
GlobalFree(tampon);
return 0;
}
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 8 déc. 2005 à 18:32
il sufit de compter :
char* s = tampon;
int index = 0;
TEXTMETRIC tm;
GetTextMetrics(hdc, &tm);
while(*s != '\0')
{
// fin de ligne
char* end = strchr(s, '\r');
if(end == NULL)
end = s+strlen(s);
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 8 déc. 2005 à 09:39
- GetWindowText(hEdit,tampon,lenbloc+1);
sinon le dernier caractère n'y sera pas (la taille passée doit comprendre la place pour le nul de fin).
- TextOut ne permet pas d'aller à la ligne à chaque \r\n
Il faut dessiner les lignes une par une (en cherchant les \r\n)
Pour passer à la ligne d'après il te faudra la hauteur d'une ligne que tu peux récupérer par GetTextMetrics ou GetTextExtentPoint32.