begin process at 2012 02 10 20:09:57
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

GUI

 > 

Conserver messages dans hEdit à chaque envoi de nveau message


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

Conserver messages dans hEdit à chaque envoi de nveau message

mercredi 9 juillet 2008 à 14:13:32 | Conserver messages dans hEdit à chaque envoi de nveau message

piroman14

Bonjour tout le monde:
Dsl mais je suis toujours aussi mauvais en winAPI depuis la dernière fois.
Mon problème est que je n'arrive pas à conserver les messages précédents dans ma fenêtre hEdit lorsque j'en envois un nouveau! (cf la partie du code concerné en gras) Comment-faire? Ca ne doit pas être bien compliqué mais j'ai bidouillé pas mal et sans succès.
Merci d'avance.
Noobinho




LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    static HWND hEdit;
    static BOOL EditNotChg = TRUE;
    FILE *fp0, *fp1, *fp2;
    FILE *tmpf= 0;      //Opened temp. file
 
 char name[255],repertoire[255];
 char ext[7], mode[7];
 unsigned int i =0, j =0, k =0;
 unsigned int imax, jmax, kmax;
 unsigned char pix =0; 
 char *vtk, *vtkPtr;


 #define IDC_COMBO1 1000
 #define IDD_DIALOG1 101


 switch (uMsg)
    {
        case WM_CREATE:

            {
             HFONT hFont;

             hEdit = CreateWindow("edit","Pour générer les images acoustiques de votre échantillon : Fichier -> Générer les images acoustiques à partir d'un fichier VTK", WS_CHILD | WS_VSCROLL | WS_VISIBLE | ES_READONLY | BS_RIGHTBUTTON | BS_RADIOBUTTON,0, 0, 0, 0, hwnd, NULL, hinst, NULL);
             hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
             SendMessage(hEdit,WM_SETFONT,(UINT)hFont,TRUE);
             SendMessage(hEdit, WS_DLGFRAME | EM_SETMARGINS,  EC_LEFTMARGIN | EC_RIGHTMARGIN | ES_MULTILINE | ES_WANTRETURN | ES_AUTOHSCROLL, MAKELONG(5, 5));
             SendMessage(hEdit , WM_PAINT,0,0);
    return 0;
            }

        case WM_CLOSE:
    DestroyWindow(hwnd);
    return 0;

  case WM_COMMAND:

            if(LOWORD(wParam) == IDM_OPEN)
              {
                OPENFILENAME ofn;
                CHAR szFile[MAX_PATH]={0};

                ZeroMemory(&ofn, sizeof(OPENFILENAME));

                ofn.lStructSize =sizeof(OPENFILENAME);
             ofn.hwndOwner = hwnd;
                ofn.lpstrFile = szFile;
                ofn.nMaxFile = MAX_PATH;
                ofn.lpstrFilter ="Fichier  VTK\0*.vtk\0";
                ofn.nFilterIndex = 1;
                ofn.Flags =OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
  
                if (GetOpenFileName(&ofn)==TRUE)  

    {  
     
    UpdateWindow(hEdit);

     //Indication du fichier traité
    char message1[255];
    strcpy(message1,"Traitement du fichier : ");
    strcat(message1,szFile);
    strcat(message1," en cours... ");
    
    SendMessage(hEdit, WM_SETTEXT, 0, (long)message1);
    //SendDlgItemMessage(hwnd, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)message1);

   UpdateWindow(hEdit);

// je ne sais pas comment paramètrer SendMessage ou SendDlgItemMessage pour conserver les messages préexistants et afficher le nouveau.
  
      //Ouverture d'un fichier temp.  
      tmpf= scatOpenTempFile();

      //Ouverture des fichiers vtk
      strcpy(ext,".vtk"); strcpy(mode,"rb");
      fp0= scatOpenFile(name,ext,mode);
      strcpy(ext,"X.vtk"); strcpy(mode,"wb+");
      fp1= scatOpenFile(name,ext,mode);
      strcpy(ext,".xls"); strcpy(mode,"wa");
      fp2= scatOpenFile(name,ext,mode);

      //Affichage de l'entete du fichier VTK
      scatHeaderVTK(fp0, fp1, &imax, &jmax, &kmax);

      //Allocation memoire dynamique
      vtkPtr= scatMemAllocVTK(imax, jmax, kmax);
      vtk= vtkPtr;


      //Lecture des echos et reorganisation des data
      scatReadFileVTK(imax,jmax,kmax,fp0,vtk);

      //Traitement des data: lissage + segmentation
      vtk= vtkPtr;
      scatMainProcessing(imax,jmax,kmax,tmpf,fp2,vtk,name);


      fclose(fp0);
      fclose(fp2);


       //fclose(fp1);
       //fclose(tmpf);
       //exit(0);


     //Indication du répertoire où sont rangés les xls, bmp et vtk
     char message2[255];
     strcpy(message2,"Les fichiers xls, bmp et vtk sont rangés dans le répertoire : ");
     strcat(message2,repertoire);


     SendMessage(hEdit, WM_SETTEXT, 0,(long)message2);
     SendDlgItemMessage(hEdit, IDC_COMBO1, CB_ADDSTRING, 0, (LPARAM)message2);

     


      //Remise du fichier vtk dans l'ordre initial
      //Lecture des data

      vtk= vtkPtr;
      rewind(tmpf);

//      for(i=0;i<imax;i++){
//     for(j=0;j<jmax;j++){
//       for(k= 0 ; k<kmax; k++) {
//     fread(&pix,sizeof(unsigned char),1,tmpf);
//     *(vtk+(k*(jmax*imax)+j*imax+i))= pix;  
//       }
//     }
//      }

      //Reecriture
//       for(k=0;k<kmax;k++)
//      for(j=0;j<jmax;j++)
//        for(i= 0; i<imax; i++, vtk++)
//      fwrite(vtk,sizeof(unsigned char),1,fp1);

      fclose(tmpf);
      fclose(fp1);

      free(vtkPtr);     
    }
   
    
 
   }
            if(LOWORD(wParam) == IDM_QUIT) PostMessage(hwnd, WM_CLOSE,0,0);
            if(HIWORD(wParam) == EN_CHANGE) EditNotChg = FALSE;
           
   return 0;

        case WM_SIZE:
             MoveWindow(hEdit, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE);
             return 0;

        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;

        default:
            return DefWindowProc(hwnd, uMsg, wParam, lParam);
    }
}

mercredi 9 juillet 2008 à 15:34:31 | Re : Conserver messages dans hEdit à chaque envoi de nveau message

tibob51

Membre Club
Réponse acceptée !
Salut je suis pas sur d'avoir compris, mais il faut que tu utilise EM_SETSEL et
EM_REPLACESEL.

mercredi 9 juillet 2008 à 16:01:30 | Re : Conserver messages dans hEdit à chaque envoi de nveau message

piroman14

Merci ça marche!

Pour info, en ce qui concerne mon programme  EM_REPLACESEL marche mais pas EM_SETSEL.
Sais-tu où je peux trouver une aide pour toutes ces config? Je ne les trouve ni sur l'aide de MS VC++ ni sur MSDN.
J'aurais aimé que les messages s'affichent après et non avant mes messages précédents dans ma fenêtre hEdit. Sais-tu comment y remédier?
Enfin, comment fais-t-on pour passer à la ligne dans une fenêtre hEdit? J'ai essayé \n mais en vain.

Merci encore.
Noobinho
mercredi 9 juillet 2008 à 17:32:57 | Re : Conserver messages dans hEdit à chaque envoi de nveau message

jfrancois

Bonjour,

Pour ajouter dans un combobox j'utilise tout simplement :
SendMessage(hEdit,CB_ADDSTRING,0,(LPARAM)message);


Jean-François

mercredi 9 juillet 2008 à 18:30:03 | Re : Conserver messages dans hEdit à chaque envoi de nveau message

tibob51

Membre Club
Réponse acceptée !
Pour les infos utilis tout simplement notreamis commun (google), tape les mots           lef (EM_SETSEL ....) et le premier lien sera vers msdn.

Sinon pour placer ton texte voici un exemple:

int i=GetWindowTextLength(Edit4);
SendMessage(Edit4,EM_SETSEL,i+1,i+1); // pour se placer à la fin

SendMessage(Edit4,EM_REPLACESEL,false,(LPARAM)"Ton texte");
SendMessage(Edit4,EM_REPLACESEL,false,(LPARAM)" \r\n");// pour le saut de ligne



jeudi 10 juillet 2008 à 10:00:33 | Re : Conserver messages dans hEdit à chaque envoi de nveau message

piroman14

Merci tibo ça marche nickel!
Tu m'a encore trop aidé !

A bientôt


Cette discussion est classée dans : wm, hwnd, ofn, hedit, vtk


Répondre à ce message

Sujets en rapport avec ce message

eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT [ par piroman14 ] Bonjour je souhaiterais envoyer des messages au moyen de la fonction SendMessage dans la fenêtre déjà existante hEdit.L'aide n'est pas très fournie. J Problème d'affichage dans une fenêtre hEdit [ par piroman14 ] Bonjour je suis débutant avec les winAPI.Je n'arrive pas à afficher mon message dans la fenêtre hEditJ'y suis arrivé par hasard en mettant un MessageB Problème de récupération de chemin valide [ par piroman14 ] Noobinho is back!!!Je souhaite faire une interface graphique pour un programme que j'ai fait en console et qui marchait correctement.La seule saisie à Problème pour iconiser une application [ par piroman14 ] Noobinho one again!!Bonjour tout le monde!Je serais très reconnaissant si vous pouviez m'aiguiller pour ce programme.Je souhaite iconiser mon applicat OPENFILENAME [ par mat74 ] salut à tous, voila je voudrais ouvrir une boite dialogue pour enregistrer un fichier, récupérer la valeur de type, et rajouter un bouton suivant la v Superposition de texte pour STATIC transparente [ par Daniel13 ] Bonjour,J'ai un soucis de superposition de texte avec mes composants static dans une appli win32 (non-mfc) skinnéeMon but est de les rendre transparen Récupérer séparément Nom et Chemin d'un fichier [ par cartes1 ] BonjourAvec Visual studio C++ 6 en Api pur, je n'arrive pas à récupérer séparément le nom d'un fichier d'un côté et le chemin de l'autre ( sans le nom richedit bloquer la modification d'un document [ par babyboo1107 ] Bonjour j'aimerais savoir comment faire pour lorsque je fais fermer le document il me met une fenetre gisée(ca j'ai trouver) mais ou il ne soit pas po Probleme de socket [ par alphaone ] // tcp_client.cpp*: définit le point d'entrée pour l'appli Problème d'affichage avec la fonction SetWindowText [ par piroman14 ] Hi everybody!!Quelqu'un pourrais-t-il m'expliquer pourquoi si SetWindowText(hEdit,"Traitement en cours..."); est avant   if (GetOpenFileName(&ofn)==TR


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 0,359 sec (3)

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