IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Cr�ation de son propre message dans un formulaire


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Par d�faut Cr�ation de son propre message dans un formulaire
    Bonjour, je ne sais pas trop comment exprimer cela mais je vais essayer d'�tre compr�hensible :

    j'ai un formulaire tout simple avec par exemple un label au milieu.

    j'ai un autre formulaire avec un simple bouton

    je voudrais qu'en cliquant sur le bouton cela envoit un message avec param�tre � mon premier formulaire et que ce message fasse executer une proc�dure qui changera le caption du label.

    Mais je ne veux pas passer par un appel direct, je tiens r�ellement � envoyer un message (comme quand le systeme envoit un message � la fen�tre pour un repaint par exemple).

    Pourriez vous m'eclairer ?

  2. #2
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Salut

    Je pense que tu dois cr�er un message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    #define MY_MESSAGE WM_USER + 10
    que ton formulaire 1 envoie au formulaire deux.
    Dans le MESSAGE_MAP du formulaire 2 du d�fini
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
        MESSAGE_HANDLER(MY_MESSAGE ,TMessage,On_MY_MESSSAGE)
    et donc l'unit de la forme


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    void __fastcall TForm2::On_MY_MESSSAGE(TMessage& Msg)
    {
        // Traitement du message
        TForm::Dispatch(&Msg);
     }
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Par d�faut
    Merci beaucoup pour ton aide je vais voir si ca peut m'aider, mais je pense que c'est ce que je recherche.


    Est-il possible de passer un param�tre(comme une string qui sera recuper�e) avec le message ?

  4. #4
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Tu peux passer ce que tu veux (avec des pr�cautions bien sur) en utilisant wParam et lParam de ton message. Par exemple l'adresse d'une zone m�moire obtenue avec new et que tu lib�reras ensuite
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Par d�faut
    Bon je bute sur la facon d'envoyer le message du form1 vers le form2

  6. #6
    Membre exp�riment�
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Par d�faut
    Bonjour,

    Citation Envoy� par androme
    Bon je bute sur la facon d'envoyer le message du form1 vers le form2
    Il faut que tu r�cup�re le handle de la form2, et ensuite utiliser PostMessage pour lui envoyer un message.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
      PostMessage(Form2->Handle, MY_MESSAGE, 0, 0);

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Par d�faut
    Vous assurez trop les gars, je d�bute et heureusement que vous �tes l� ;-)

    ca marche nickel !!

    Est-il possible de passer une String comme param�tre dans WParam ?

  8. #8
    Membre exp�riment�
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Par d�faut
    Si je ne dis pas de connerie, les deux param�tres LPARAM et WPARAM doivent �tre de type DWORD; donc la r�ponse est NON.

    Par contre ce que tu peux faire c'est passer un pointeur sur une zone m�moire allou�e (enfin je crois).

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Par d�faut
    Je n'arrive pas � passer une string en param�tres avec un pointeur. je s�che

  10. #10
    Membre exp�riment�
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Par d�faut
    Voici un exemple simplle que j'ai fait sur une forme, mais tu pourrais l'adapter facilement sur deux formes:

    .h
    .cpp
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    //Lorsque je poste le message
    Buffer = (char *)malloc(sizeof(char) * 10);
    memcpy(Buffer, "Test\0", 5);
    PostMessage(Form1->Handle, WM_MONMESSAGE (DWORD)Buffer, NULL);
     
    //Réception du message
    void __fastcall TForm1::WndProc(Messages::TMessage &Message)
    {
    if (Message.Msg == WM_MONMESSAGE)
    {
      char *Temp;
      Temp = (char *)Message.WParam;//Je récupère un pointeur sur la zone mémoire allouée avant le PostMessage
      ShowMessage(Temp); //Ca affiche Test
    }
    else{}
     
      TForm::WndProc(Message);
    }
    N'oublies pas de faire les lib�rations n�cessaires. Moi j'ai juste montr� comment faut faire ;-)

    Bon courage

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Par d�faut
    Salut moi ce que je fait, j'inclu le '.h' de ton formulaire qui contien ton Label dans le formulaire qui contient ton Boutton, puis sur l'action OnClick par exemple tu mais :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Form1->[nom de ton label]->Caption="Ton texte";
    en fait je sais pas vraiment si c'est exacte sa que tu veut faire mais cette methode a le merite d'etre tres simple a mettre en oeuvre.

  12. #12
    Membre exp�riment�
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Par d�faut
    Citation Envoy� par belfaigore
    Salut moi ce que je fait, j'inclu le '.h' de ton formulaire qui contien ton Label dans le formulaire qui contient ton Boutton, puis sur l'action OnClick par exemple tu mais :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Form1->[nom de ton label]->Caption="Ton texte";
    en fait je sais pas vraiment si c'est exacte sa que tu veut faire mais cette methode a le merite d'etre tres simple a mettre en oeuvre.
    Je ne pense pas que ca r�pond � ses besoins, parce que dans le premier post il a bien pr�cis�
    Mais je ne veux pas passer par un appel direct, je tiens r�ellement � envoyer un message (comme quand le systeme envoit un message � la fen�tre pour un repaint par exemple).

  13. #13
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Dans ta Form2 tu fais :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    void __fastcall TForm2::Button1Click(TObject *Sender)
    {
        char *str = new char[Edit1->Text.Length()+1];
        strcpy(str, Edit1->Text.c_str());
        PostMessage(Form1->Handle, MY_MESSAGE, (DWORD)str, 0);
    }
    //---------------------------------------------------------------------------
    On suppose ici que sur un clik de bouton tu envoies le text d'un Edit

    Dans ta Form1 tu fais :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    void  __fastcall TForm1::On_MyMessage(TMessage& Msg)
    {
        Label1->Caption = (char *)Msg.WParam;
        delete[] ((char *)Msg.WParam);
        TForm::Dispatch(&Msg);
    }
    Cel� suppose que tu aies inclus unit1.h" dans unit2.cpp et unit2.h dans unit1.cpp

    Tu d�finis le MY_MESSAGE comme je l'ai expliqu� plus haut.
    Pour le Message Map tu fais :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    BEGIN_MESSAGE_MAP
        MESSAGE_HANDLER(MY_MESSAGE,TMessage,On_MyMessage)
    END_MESSAGE_MAP(TForm)
    dans le code de unit1.h
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    135
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 135
    Par d�faut
    Ok d'accord d�soler, autant pour moi, j'avais pas vu

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Par d�faut
    Tout � fait n�o41 ;-)

  16. #16
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Je n'avais pas vu le message de n�o41. Perso je pr�f�re le message map mais bon tout est � faire de go�t.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7
    Par d�faut
    Quelle est la diff�rence entre PostMessage et SendMessage ?

  18. #18
    Membre exp�riment�
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    D�tails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Par d�faut
    Le PostMessage place un message dans la file d'attente de windows et n'attends pas que le message soit trait�, alors que le SendMessage ne rend pas la main tant que le message post� n'ait pas �t� trait�.

    Donc PostMessage esy asynchrone alors que SendMessage est Synchrone.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 29/04/2007, 18h44
  2. Cr�ation de son propre repository
    Par Cooly dans le forum Maven
    R�ponses: 1
    Dernier message: 13/03/2007, 18h28
  3. Banniere Message dans un formulaire
    Par Djekill dans le forum Access
    R�ponses: 2
    Dernier message: 27/07/2006, 14h08
  4. Suppression de ses propres messages dans une discussion
    Par Kcirtap dans le forum Evolutions du club
    R�ponses: 2
    Dernier message: 18/04/2006, 08h37
  5. [C#] Ajouter son propre composant dans Design de VS.Net
    Par yannick_sch dans le forum Windows Forms
    R�ponses: 2
    Dernier message: 26/08/2004, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo