begin process at 2012 05 29 16:16:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

positionnement fin fenêtre d'édition


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

positionnement fin fenêtre d'édition

jeudi 2 novembre 2006 à 14:22:38 | positionnement fin fenêtre d'édition

yepla75

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 ?)

Merci
jeudi 2 novembre 2006 à 15:13:41 | Re : positionnement fin fenêtre d'édition

yann_lo_san

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.

jeudi 2 novembre 2006 à 15:15:53 | Re : positionnement fin fenêtre d'édition

yann_lo_san

Oups, au fait, esceque tu rafraichis l'affichage à chaque ligne ?

jeudi 2 novembre 2006 à 15:33:27 | Re : positionnement fin fenêtre d'édition

vecchio56

Administrateur CodeS-SourceS
Mettre le curseur à la fin de hEdit:

int n = GetWindowTextLength(hEdit);
SendMessage(hEdit, EM_SETSEL, n, n);


_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 3 novembre 2006 à 10:27:20 | Re : positionnement fin fenêtre d'édition

yepla75

Merci pour vos réponses, mais j'y arrive po... Je vous laisse un bout de code (de la fonction MainWndProc), si ça peut vous inspirer... merci

long l=0;
short k;
char ch[12] = "RAGNAGNA\r\n"";

switch(msg)
{
case WM_CREATE :
   hed = CreateWindow("edit","",WS_CHILD|WS_VISIBLE|WS_VSCROLL|ES_MULTILINE|ES_AUTOVSCROLL|ES_WANTRETURN,0,0,0,0,hwnd,NULL,hinst,NULL);
for (k=0;k<50;k++)
   {
   SendMessage(hed,EM_SETSEL,l,l);
   SendMessage(hed,EM_REPLACE_SEL,0,ch);
   l += strlen(ch);
   }

...
}

vendredi 3 novembre 2006 à 11:05:09 | Re : positionnement fin fenêtre d'édition

vecchio56

Administrateur CodeS-SourceS
Effectivement ca ne marche pas, mais c'est seulement dû au fait que tu mettes ton code dans le WM_CREATE. Essaie ca:

  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);
    SetTimer(hWnd, 0, 100, 0);
    break;
  case WM_TIMER:
    for (k=0;k<10;k++)
    {
      SendMessage(hed,EM_SETSEL,l,l);
      SendMessage(hed,EM_REPLACESEL,0,(LPARAM)ch);
      l += strlen(ch);
    }
    break;

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 3 novembre 2006 à 11:17:05 | Re : positionnement fin fenêtre d'édition

yepla75

Ca tourne ; si tu as 2mn, si tu peux m'expliquer pourquoi ca tourne avec WM_TIMER et pas avec WM_CREATE, ça m'avancerait le schmilblikk ; merci a+

vendredi 3 novembre 2006 à 11:22:39 | Re : positionnement fin fenêtre d'édition

vecchio56

Administrateur CodeS-SourceS
Je voudrais bien t'expliquer mais je ne comprends pas non plus pourquoi ca ne marche pas

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 3 novembre 2006 à 11:25:42 | Re : positionnement fin fenêtre d'édition

yepla75

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+
vendredi 3 novembre 2006 à 11:34:51 | Re : positionnement fin fenêtre d'édition

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
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

_____________________________________
Un éditeur de ressources gratuit pour Windows


1 2

Cette discussion est classée dans : fin, données, lignes, fenêtre, positionnement


Répondre à ce message

Sujets en rapport avec ce message

afficher une table de ma BD dans ma fenêtre principale [ par romydamour ] bonjour tout le monde, voilà je fais une API win32 sous visualc++, et je travaille avec les bases de données par le biais de ADO.En fait je récupère d StringGrid [ par speeddo ] Bonjour, Je souhaite utiliser un StringGrid pour afficher des données. Cependant, je ne connais pas le nombre de donées. Peut-on modifier la dimension TTreeview avec informations en fin de lignes [ par steph12358 ] Bonjourpour stocker dans les lignes d'un TTreeView de borland c++ builderj'ajoute en fin de lignes des informations sous forme de colonnes fixesex:lib Récuper un mot dans un fichier [ par thegame88 ] Bonjour à tous,Je suis entrain de développer un pti prog je voudrais que ce prog me permette de récupérer les 16 derniers caractères d'un fichier.Ce f Fin de création d'une fenêtre... [ par Zart ] Bonjour, Y a t il une méthode permettant de savoir si une fenêtre est complètement chargée ? Le truc serais que ma fenêtre se lance... Ensuite quand Problème de continuité de lignes en 2D [ par shenron666 ] Bonjour, j'ai un problème avec le dessin 2D opengl j'utilise SDL pour l'interface système (fenêtre, souris, ect )je crée une fenêtre en 800 x 600puis Tri - Chaine - Pointeurs - en c [ par etienn11 ] Bonjour, Je cherche à trier les lignes d'un fichier (80 car et 100 lignes MAX) en C.J'y suis arrivé avec le code ci-dessous, mais maintenant j'aimerai Lecture base données [ par goutbouyo ] Salut,Je cherche à lire une valeur dans la base de données mais je n'y arrive pas ...Pouvez vous me dire ce qui ne va pas dans ce morceau de code SVP Problème de "tampon" [ par speeddo ] Bonjour,je stock dans une variable de type Variant des données venant d'un autre logiciel. Ces données sont mis dans la dite variable grace à une fonc Rediriger des données venant du port série sur l'entrée clavier.... [ par lecods ] Bonjour,voila mon problème.Lorsqu'on connecte un périphérique comme un lecteur de code à barre sur l'entrée clavier, lorsqu'on lit un code à barre, le


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,916 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales