begin process at 2010 02 10 15:22:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

GUI

 > 

eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT


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

eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT

mercredi 2 juillet 2008 à 14:14:55 | eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT

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. Je ne sais pas comment remplir les champs de la fonction.


LRESULT
SendMessage(HWNDhWnd, UINTMsg, WPARAMwParam
, LPARAMlParam); 
Merci_ de votre aide ça me serait très utile.


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];
 char ext[7], mode[7];
 unsigned int i, j, k;
 unsigned int imax, jmax, kmax;
 unsigned char pix; 
 char *vtk, *vtkPtr;

 switch (uMsg)
    {
        case WM_CREATE:

            {
             HFONT hFont;

             hEdit = CreateWindow("edit","\nPour générer les images acoustiques de votre échantillon : Fichier -> Générer les images acoustiques à partir d'un fichier VTK", WS_CHILD | WS_VISIBLE |ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL,0, 0, 0, 0, hwnd, NULL, hinst, NULL);
             hFont = (HFONT)GetStockObject(ANSI_FIXED_FONT);
             SendMessage(hEdit,WM_SETFONT,(UINT)hFont,TRUE);
             SendMessage(hEdit, EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, MAKELONG(5, 5));
             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)

    {     //je voudrais insérer un message ici dans la fenêtre hEdit                         

      i = 0;   
     while (*(szFile + i) != 0)
     {
        *(name + i) = *(szFile + i);
        ++i;
     }
     *(name + i) = 0; // terminateur par défaut
     while (i > 0)
     {
        --i;
        if (*(name + i) == '\\') break; // pas d'extension
        if (*(name + i) == '/') break; // pas d'extension
        if (*(name + i) == '.')
        {
        *(name + i) = 0; // extension supprimée
        break;
        }
        }
          }
              }
            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 2 juillet 2008 à 20:14:38 | Re : eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT

juju12

Déjà la prochaine fois évite de mettre le nom de la fonction en blanc ça aide pas
Ensuite pour un Edit tu peux utiliser simplement SetWindowText(hEdit,"le texte");

accessoirement pour répondre à ta question :
SendMessage(HWND hEdit,WM_SETTEXT,NULL,(LPARAM)"le texte");
suffit de savoir quel message utiliser (WM_SETTEXT en l'occurence) et chercher la signification des paramètres pour ce message en particulier sur MSDN ou dans le SDK.
jeudi 3 juillet 2008 à 09:29:40 | Re : eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT

piroman14

Excuse moi pour la fonction mais elle était sélectionnée c pour ça qu'elle n'était pas affichée en noir.

Sinon j'ai bien essayé ce que tu m'as dit (j'avais essayé des choses semblables avant) mais sans succès.
Ces lignes ne génèrent aucune erreur à la compilation mais aucun texte ne s'affiche dans ma fenêtre.
Ne faut-il pas rafraîchir la fenêtre? Le pb c que je ne sais pas comment.

Merci de me donner des pistes.

Noobinho
jeudi 3 juillet 2008 à 11:50:26 | Re : eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT

piroman14

Hi everybody!!

Quelqu'un pourrais-t-il m'expliquer pourquoi si SetWindowText(hEdit,"Traitement en cours..."); est avant   if (GetOpenFileName(&ofn)==TRUE) le message s'affiche bien dans ma fenêtre alors que si celui-ci est après il ne s'affiche pas?

Merci par avance de vos précieux conseils!

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;
  
    SendMessage(hEdit,WM_SETTEXT,NULL,(LPARAM)"Traitement en cours..."); // le message ici s'affiche bien
    SetWindowText(hEdit,"Traitement en cours...");

                if (GetOpenFileName(&ofn)==TRUE)

    {  HFONT hFont;
     
     SetWindowText(hEdit,"Traitement en cours..."); // alors qu'ici il ne s'affiche pas ???
     SendMessage(hEdit,WM_SETTEXT,NULL,(LPARAM)"Traitement en cours...");

     i = 0;   
     while (*(szFile + i) != 0)
     {
        *(name + i) = *(szFile + i);
        ++i;
     }
     *(name + i) = 0; // terminateur par défaut
     while (i > 0)
     {
        --i;
        if (*(name + i) == '\\') break; // pas d'extension
        if (*(name + i) == '/') break; // pas d'extension
        if (*(name + i) == '.')
        {
        *(name + i) = 0; // extension supprimée
        break;
        }
     }

MERCI

jeudi 3 juillet 2008 à 13:37:33 | Re : eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT

juju12

Pourquoi mets-tu SendMessage ET SetWindowText? C'est un des deux, ils font la même chose en l'occurence.
Quant à savoir pourquoi ça marche pas dans un cas...Es-tu sûr que tu entres bien dans le bloc?
Tu peux tester par exemple :
if(GetOpenFileName(&ofn)) // (pas besoin de ==TRUE)
{
SetWindowText(hEdit,"Traitement en cours");
MessageBox(NULL,"Test","Test",MB_OK);
...
}



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


Répondre à ce message

Sujets en rapport avec ce message

Conserver messages dans hEdit à chaque envoi de nveau message [ par 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 m 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 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 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 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 Poblème avec un pointeur... [ par xxDarkSidexx ] Bonsoir,J'essaye tant bien que mal de mettre en place une ListView...Le seul problème est malheureusement cette ligne de code...je n'arrive pas a savo Ameliorer code (msg.message==WM_KEYDOWN...) [ par Booster ] Bonjour à tous,Dans un sousi de rendre mon code le plus lisible possible j'aimerais savoir s'il n'y à pas une façons plus charmante, plus courte de co ouvrir une image [ par doudouhic ] Bonjour, J'essaye de charger une image à partir du disque dure en utilisant les MFC. j'utilise le code suivant: OPENFILENAME ofn; // common dialog box 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 1,310 sec (4)

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