Edit multilignes afficher le nb de ligne visibles

Résolu
babyboo1107 Messages postés 40 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 9 septembre 2010 - 17 nov. 2008 à 13:28
babyboo1107 Messages postés 40 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 9 septembre 2010 - 20 nov. 2008 à 17:03
Bonjour à tous,

voilà j'aimerai pouvoir afficher le nb de lignes où il y à des caractère affiché  exemple

1 kkkk
2
3
4jjj

il devrais m'afficher 2 pcq je n'ai que la ligne 1 et 4 qui sont "remplie"
Seulement je bidouile depuis 3 jours avec l'aide mais je n'y comprend pas grand chose
voici mon code mais il ne me donne pas le résultat escompter bien sur




case WM_COMMAND:
                      if ((HWND)lParam hWndEdit && HIWORD(wParam) EN_CHANGE) {
                        nNbLignes = SendMessage(hWndEdit,EM_GETLINECOUNT,0,0);
                       
              for (k=1;k<=nNbLignes;++k){
                          nbcharact = SendMessage(hWndEdit,EM_LINELENGTH ,k,0);
                          if (nbcharact!= 0) {++lgVisible;}
                        }

                        wsprintf(tampon,"%s : %d Ligne(s)",szProgName,lgVisible);
                        SetWindowText(hWnd,tampon);
                        return 0;
      }
      break;               

Je vous remercie infiniment de votre aide

Babyboo

4 réponses

babyboo1107 Messages postés 40 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 9 septembre 2010
20 nov. 2008 à 17:03
 j'ai trouver pour tous ceux qui seront dans mon cas ou un similaire

// WinEdit.c
// Une fenêtre d'édition

#include <windows.h>                        // déclarations de l'API Windows

PSTR szProgName = "WinEdit";                // le nom du programme

LRESULT CALLBACK WndProc(HWND hWnd,         // handle de notre fenêtre
                         UINT nMsg,         // numéro du message
                         WPARAM wParam,     // 1ère info supplémentaire
                         LPARAM lParam) {   // 2ème info supplémentaire
  HINSTANCE hInst;                          // processus propriétaire
  long lgVisible,tps,carFinL =1;
  long nNbLignes=0;
  int k;
  int lgsvt;
  char tampon[80];                          // tampon pour l'affichage
  static HWND hWndEdit;                     // sous-fenêtre (garde sa valeur)
                                            // entre les appels de WndProc
  switch(nMsg) {                            // quel message ?
    case WM_CREATE :                        // on va créer une sous-fenêtre
                                            // le processus propriétaire
      hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
      hWndEdit = CreateWindow("EDIT",       // nom de la classe
                              NULL,         // pas de titre
                              WS_CHILD |    // fenêtre fille
                              WS_VISIBLE |  // visible
                              WS_VSCROLL |  // avec défilement vertical
                              ES_MULTILINE, // édition sur plusieurs lignes
                              0, 0, 0, 0,   // dimension spécifiée ailleurs
                              hWnd,         // handle fenêtre parente
                              NULL,         // pas de menu
                              hInst,        // processus propriétaire
                              NULL);        // pas de data supplémentaires

      return 0;                             // message traité
    case WM_SETFOCUS :                      // on reçoit la main
      SetFocus(hWndEdit);                   // la passer à la fenêtre fille
      return 0;                             // message traité
    case WM_SIZE :                          // dimension de fenêtre ajustée
                                            // redimensionner fenêtre fille
      MoveWindow(hWndEdit,                  // handle fenêtre fille
                 0,                         // bord gauche
                 0,                         // bord supérieur
                 LOWORD(lParam),            // largeur
                 HIWORD(lParam),            // hauteur
                 TRUE);                     // repeint la fenêtre fille
      return 0;                             // message traité
          case WM_COMMAND:
              if ((HWND)lParam hWndEdit && HIWORD(wParam) EN_CHANGE) {
                        nNbLignes = SendMessage(hWndEdit,EM_GETLINECOUNT,0,0);
                        if ((nNbLignes==1)&& (SendMessage(hWndEdit,EM_LINELENGTH,0,0)==0))nNbLignes=0;

              }

                        wsprintf(tampon,"%s : %d ",szProgName,nNbLignes);
                        SetWindowText(hWnd,tampon);
                        return 0;

      break;                                // les autres WM_COMMAND non traités
    case WM_CLOSE :
      if (SendMessage( hWndEdit,EM_GETMODIFY, 0, 0)){
      if(MessageBox(hWnd,
                    "Sûr de vouloir quitter ?",
                    szProgName,
                    MB_ICONQUESTION |
                    MB_OKCANCEL
                   ) == IDOK)
        DestroyWindow(hWnd);
       }
        else{DestroyWindow(hWnd);}
      return 0;                             // message traité
    case WM_DESTROY :                       // fenêtre en passe d'être détruite
      PostQuitMessage(0);                   // envoie WM_QUIT
      return 0;                             // message traité
  }
  // tous les messages non pris en charge
  return( DefWindowProc(hWnd, nMsg, wParam, lParam) );
}
Babyboo
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 nov. 2008 à 19:21
lgVisible, tu le mets à 0 avant la boucle ???

for(k = 0; k < nbLignes; k++) ...

ciao...
BruNews, MVP VC++
0
babyboo1107 Messages postés 40 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 9 septembre 2010
18 nov. 2008 à 11:43
Merci pour ta réponse mais ça ne change rien ca ne fonction qd même pas avec ou sans l'égale avec l'égale il m'aurait mis une ligne de plus je m'en serai rendue compte s'il suffisait de ça merci qd même je crois qu'il s'agit plutôt d'une mauvaise utilisation des fonction envoyées




Babyboo
0
babyboo1107 Messages postés 40 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 9 septembre 2010
20 nov. 2008 à 17:03
 j'ai trouver pour tous ceux qui seront dans mon cas ou un similaire

// WinEdit.c
// Une fenêtre d'édition

#include <windows.h>                        // déclarations de l'API Windows

PSTR szProgName = "WinEdit";                // le nom du programme

LRESULT CALLBACK WndProc(HWND hWnd,         // handle de notre fenêtre
                         UINT nMsg,         // numéro du message
                         WPARAM wParam,     // 1ère info supplémentaire
                         LPARAM lParam) {   // 2ème info supplémentaire
  HINSTANCE hInst;                          // processus propriétaire
  long lgVisible,tps,carFinL =1;
  long nNbLignes=0;
  int k;
  int lgsvt;
  char tampon[80];                          // tampon pour l'affichage
  static HWND hWndEdit;                     // sous-fenêtre (garde sa valeur)
                                            // entre les appels de WndProc
  switch(nMsg) {                            // quel message ?
    case WM_CREATE :                        // on va créer une sous-fenêtre
                                            // le processus propriétaire
      hInst = (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE);
      hWndEdit = CreateWindow("EDIT",       // nom de la classe
                              NULL,         // pas de titre
                              WS_CHILD |    // fenêtre fille
                              WS_VISIBLE |  // visible
                              WS_VSCROLL |  // avec défilement vertical
                              ES_MULTILINE, // édition sur plusieurs lignes
                              0, 0, 0, 0,   // dimension spécifiée ailleurs
                              hWnd,         // handle fenêtre parente
                              NULL,         // pas de menu
                              hInst,        // processus propriétaire
                              NULL);        // pas de data supplémentaires

      return 0;                             // message traité
    case WM_SETFOCUS :                      // on reçoit la main
      SetFocus(hWndEdit);                   // la passer à la fenêtre fille
      return 0;                             // message traité
    case WM_SIZE :                          // dimension de fenêtre ajustée
                                            // redimensionner fenêtre fille
      MoveWindow(hWndEdit,                  // handle fenêtre fille
                 0,                         // bord gauche
                 0,                         // bord supérieur
                 LOWORD(lParam),            // largeur
                 HIWORD(lParam),            // hauteur
                 TRUE);                     // repeint la fenêtre fille
      return 0;                             // message traité
          case WM_COMMAND:
              if ((HWND)lParam hWndEdit && HIWORD(wParam) EN_CHANGE) {
                        nNbLignes = SendMessage(hWndEdit,EM_GETLINECOUNT,0,0);
                        if ((nNbLignes==1)&& (SendMessage(hWndEdit,EM_LINELENGTH,0,0)==0))nNbLignes=0;

              }

                        wsprintf(tampon,"%s : %d ",szProgName,nNbLignes);
                        SetWindowText(hWnd,tampon);
                        return 0;

      break;                                // les autres WM_COMMAND non traités
    case WM_CLOSE :
      if (SendMessage( hWndEdit,EM_GETMODIFY, 0, 0)){
      if(MessageBox(hWnd,
                    "Sûr de vouloir quitter ?",
                    szProgName,
                    MB_ICONQUESTION |
                    MB_OKCANCEL
                   ) == IDOK)
        DestroyWindow(hWnd);
       }
        else{DestroyWindow(hWnd);}
      return 0;                             // message traité
    case WM_DESTROY :                       // fenêtre en passe d'être détruite
      PostQuitMessage(0);                   // envoie WM_QUIT
      return 0;                             // message traité
  }
  // tous les messages non pris en charge
  return( DefWindowProc(hWnd, nMsg, wParam, lParam) );
}
Babyboo
0
Rejoignez-nous