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 :

Afficher une Fenêtre MDI à partir d'une DLL


Sujet :

C++Builder

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut Afficher une Fenêtre MDI à partir d'une DLL
    Bonjour,

    Voila, pour simplifier les mises à jour de mon programme, je vais créer des dll.
    Mon programme principale utilise les fenêtres MDI.
    Les différentes fenêtre que je dois afficher dans ma form principale (fsMDIForm), se trouvent dans des dll.

    Je sais réaliser l'affichage d'une form provenant d'une dll avec la fonction ShowModal() ou Show(), mais pas en MDI.

    J'ai déjà essayer de mettre fsMDIChild dans FormStyle de la fenêtre da ma dll, mais ca plante. Apparament ce n'est pas bon.


    Comment fait-on pour afficher une fenêtre fille (fsMDIChild) provenant d'une dll dans ma form principale qui est au format fsMDIForm?

    Merci d'avance pour vos réponses.

    Fred

  2. #2
    Membre habitué
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2003
    Messages : 332
    Points : 146
    Points
    146
    Par défaut
    Salut,

    Je me suis servi d'un réponse donnée sur le forum.
    Si cela peut t'aider :
    http://www.developpez.net/forums/viewtopic.php?t=279534


    Par contre j'ai une erreur en fermant le programme, que je ne suis pas arrivé à supprimer..... J'ai passer des heures dessus, mais je n'ai rien trouvé... J'ai donc inclus mes fenêtres directement dans mon programme sans passer par la dll...
    Si tu trouves, je serais interessé par la solution....


    Fred

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 390
    Points : 1 777
    Points
    1 777
    Par défaut
    Salut !

    Tout dépend comment c'est contruit.

    Par contre il me semble qu'il faut obliger la MDIForm à libérer ses composants avant de libérer la dll :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
    DestroyComponents();
    if(ChildFormDll != NULL)
        {
        FreeLibrary(ChildFormDll); //si la dll a été chargée alors on libère
        }
    }
    Par ailleurs, je sais qu'il faut jongler avec Application. Voici la fonction qui permet de créer
    une première MDIChild (fonction de la dll) :

    Les déclarations dans la dll :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    USEFORM("Unit2.cpp", Form2); //la MDIChild
    extern "C" __declspec(dllexport) void CreerFenetre(TApplication *App);
    TApplication *Oldapp;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void CreerFenetre(TApplication *App)
    {
    Oldapp = Application;
    Application = App;
    TForm2 *F = new TForm2(App);
    ShowWindow (F->Handle , SW_SHOW);
    }
    Au moment du décrochage de la dll :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* Use)
    {
        if(reason == DLL_PROCESS_DETACH)
            {
            Application = Oldapp; //Rétablir Application
            }
        return 1;
    }
    J'espère que c'est assez clair...

    A plus !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/05/2012, 14h35
  2. Affichage d'une fenêtre MFC à partir d'une DLL
    Par damdam78 dans le forum MFC
    Réponses: 1
    Dernier message: 25/11/2009, 10h24
  3. Actualiser une fenêtre parent à partir d'une popup
    Par scorian dans le forum WebDev
    Réponses: 1
    Dernier message: 22/08/2007, 09h50
  4. Ouvrir une fenêtre IE à partir d'une applic Swing
    Par Bindy dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 29/06/2007, 13h58
  5. Controler une fenêtre a partir d'une autre fenêtre
    Par Invité dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 24/08/2006, 21h21

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