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 :

Intégrer une fenêtre issue d'une DLL dans une fiche


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Par défaut Intégrer une fenêtre issue d'une DLL dans une fiche
    Bonjour,

    Je souhaiterais encapsuler une fenêtre identifiée par son Handle (lui même généré par une fonction de Dll venant de Borland C++) dans une fiche de builder 6. Ceci
    afin que l'application créée à partir de builder puisse prendre en charge correctement la gestion de cette fenêtre .

    D'avance merci pour votre aide

    Xav.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2005
    Messages : 351
    Par défaut
    1) Premièrement, tu dois associer le thread de ta DLL à l'application principale:

    Du côté de l'application: transmettre l'objet TApplication:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);
    DLLInitialize(Application);
    Du côté de la DLL, tu dois associer l'application local à l'application parente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //! Initialise the module (see the bool vs int note)
    extern "C" __stdcall __declspec(dllexport,dllimport) void Initialize(TApplication*parentAppl) {
     
    Application=parentAppl;
     
    }
    2) Ensuite, au moment où tu crée ta fenêtre "DLL", tu peux transmettre le handle de la fenêtre principale pour qu'elle apparaisse dedans:

    Du côté de l'application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLLShow(Application->MainForm);
    Du côté de la DLL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    extern "C" __stdcall __declspec(dllexport,dllimport) Show(TForm* parentForm) {
     
          TForm *MainForm=new TForm(this);
          if (MainForm) {
            // Set parent form
            if (parentForm) MainForm->Parent=parentForm;
            // Set icon
            MainForm->Icon->Handle = CopyIcon(Application->Icon);
            // Show the window in its default state
            MainForm->Show();
          }
     
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 20
    Par défaut
    Merci pour ces infos. La DLL est ecrite sous Borland C++ V 5.02 avec OWL 5, je vais essayer toutefois de m'inspirer de ton code.

    Encore merci

    Xav.

Discussions similaires

  1. Réponses: 15
    Dernier message: 06/06/2013, 15h59
  2. Afficher une image où l'on veut dans une fenêtre
    Par womannosky dans le forum OpenCV
    Réponses: 9
    Dernier message: 18/10/2012, 15h59
  3. [AC-2003] Comment utiliser une variable issue d'un recordset dans une requète SQL
    Par alainwilly dans le forum Access
    Réponses: 1
    Dernier message: 23/03/2012, 20h12
  4. Réponses: 4
    Dernier message: 04/07/2008, 10h34
  5. Réponses: 2
    Dernier message: 05/10/2007, 23h49

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