Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : eNVIYER DES MESSAGES DANS UNE FENËTRE HeDIT [ Windows / GUI ] (piroman14)

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é 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...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,328 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.