yepla75
Messages postés34Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention13 juin 2007
-
2 nov. 2006 à 14:22
yepla75
Messages postés34Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention13 juin 2007
-
3 nov. 2006 à 15:57
Salut,
J'ai un programme qui crée une fenêtre type EDIT et écrit des données dedans.
Admettons que la fenêtre (munie d'un ascenceur vertical) puisse afficher 10 lignes de texte.
Quand les données écritent dépassent 10 lignes, la visu ne suit pas, c'est-à-dire qu'on voit à l'écran les 10 premières lignes, mais pour accéder aux autres, il faut utiliser l'ascenceur vertical.
J'aimerais que la visu se fasse automatiquement sur les lignes du bas (on voit ainsi défiler à l'écran les données envoyées).
Si quelqu'un a une idée, (peut-être avec EM_SEL de SendMessage ?)
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 3 nov. 2006 à 11:34
Oui, c'était juste pour montrer un exemple. Au pire tu fais un KillTimer au premier coup, comme ca plus de problème
En fait un simple PostMessage suffira:
switch(uMsg)
{
case WM_CREATE :
hed = CreateWindow("edit",0,
WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_MULTILINE|ES_AUTOVSCROLL|ES_WANTRETURN,
0,0,400,400,hWnd,NULL,g_hInst,NULL);
PostMessage(hWnd, WM_APP + 1, 0, 0);
break;
case WM_APP + 1:
for (k=0;k<50;k++)
{
SendMessage(hed,EM_SETSEL,l,l);
SendMessage(hed,EM_REPLACESEL,0,(LPARAM)ch);
l += strlen(ch);
}
break;
Attention à bien envoyer WM_APP avec PostMessage et pas SendMessage
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 2 nov. 2006 à 15:13
Normalement la propriété AutoVScroll à true fait cela, mais tu peux le simuler avec un SendMessage toutes les 10 lignes qui envoi la touche entrée (WantReturn) qui fait défiler vers le bas le texte.
yepla75
Messages postés34Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention13 juin 2007 3 nov. 2006 à 11:25
lol
Au fait, ça me fait pas plaisir, mais je retire la réponse acceptée ! Le problème avec ta soluce, c'est que toutes les 100ms, il m'affiche 10 fois le message, avec l'ascenceur en bas certes, mais je veux simplement afficher le message 10 fois (et pas 10 fois toutes les x secondes).
a+
yepla75
Messages postés34Date d'inscriptionjeudi 19 octobre 2006StatutMembreDernière intervention13 juin 2007 3 nov. 2006 à 15:57
Rectificatif d'un de tes messages précédents : SendMessage marche bien avec WM_APP+X et même mieux !
En fait, dans mon programme, une fonction tourne en boucle, et je veux afficher dans la fenêtre EDIT : "traitement boucle i \n", avec i compteur de boucles dans la fonction.
Si je fais des SendMessage (i modulo 10 par exemple), j'aurais dans mon éditeur :
traitement boucle 0
traitement boucle 10
etc,
et ce durant l'exécution.
Si je fais un PostMessage (les messages poirotent dans la file d'attente je crois), une fois que ma fonction a fini de boucler, j'obtiens les lignes à l'écran. A moins que je me démerde mal...