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++/CLI Discussion :

détecter un événement dans une dll c++/cli et l'afficher dans un projet winforms


Sujet :

C++/CLI

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut détecter un événement dans une dll c++/cli et l'afficher dans un projet winforms
    Bonjour,
    J'ai une suolution qui contient deux projet: un dll c++/cli et un projet winforms.
    dans cette DLL, j'ai utilisé une variable score qui sera changé dans un algorithme. dans le projet winforms j'ai un champs texte qui va accepter la valeur de score. Je veux que lorsque la valeur de cette variable change, le champs texte change automatiquement et prend la nouvelle valeur

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Fais comme le reste de .Net: Crée une property autour de cette variable, et dans le setter, tu signales un event.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    http://msdn.microsoft.com/en-us/library/58cwt3zh.aspx

    Mais ça sent un problème de Design.

    Vous devriez avoir une approche type Document/Vue. Dans cette approche, la vue n'est pas notifiée à chaque modification mais quand le traitement d'une action qui a modifiée les données vient de se terminer.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Merci pour vos réponses.
    Mais j'ai pas trouvé comment je peux intégrer l'event dans mon projet. EN fait ma solution contient une dll wrapper et un projet winforms.
    La dll contient des classes natives et une classe wrapper dont laquelle je fais appel aux codes natif. transformation est la classe wrapper, normalDistribution est la classe native.
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    class normalDistribution
    {
    .....les constrcteurs et destructeurs.........
    computeStepLengthMT (const Eigen::Matrix<double, 6, 1> &x, Eigen::Matrix<double, 6, 1> &step_dir, double step_init, double step_max,
                                                                                      double step_min, double &score, Eigen::Matrix<double, 6, 1> &score_gradient, Eigen::Matrix<double, 6, 6> &hessian,
                                                                                      PointCloudSource &trans_cloud)
    {
    ...........
      while (!interval_converged && step_iterations < max_step_iterations && !(psi_t <= 0 /*Sufficient Decrease*/ && d_phi_t <= -nu * d_phi_0 /*Curvature Condition*/))
      {
        // Use auxilary function if interval I is not closed
        if (open_interval)
        {
          a_t = trialValueSelectionMT (a_l, f_l, g_l,
                                       a_u, f_u, g_u,
                                       a_t, psi_t, d_psi_t);
        }
        else
        {
          a_t = trialValueSelectionMT (a_l, f_l, g_l,
                                       a_u, f_u, g_u,
                                       a_t, phi_t, d_phi_t);
        }
    ...............
        a_t = std::min (a_t, step_max);
        a_t = std::max (a_t, step_min);
    
        x_t = x + step_dir * a_t;
    
          step_iterations++;
      }
    
    
    }
    la classe transformation est la classe wrapper
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public ref class transformation
    {
    void reg(ref %..........)
    {
    computeStepLengthMT(....................);
    }
    }
    ces deux classes citées précédemment sont des classes dans la DLL.
    Maintenant pour le projet winforms, lorsque je clique sur un bouton il fait appel à la fonction reg qui se trouve dans la classe transformation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    transformation.traintement trsf;
     private void button_registration_Click(object sender, EventArgs e)
            {
    ...........
    trsf.reg(..............);
    At_text.text=....;
    }
    Mon problème est que je veux affiche le a_t pour chaque itération. Donc j'ai besoin d'ajouter un évenement dans le bopucle while et je ne suis pas arrivée à m'appliquer.
    Merci pour vos aides

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Ah, la variable où tu veux notifier est dans le traitement de la classe native... là ça va être plus dur en effet.

    Je te conseille de passer un callback (delegate, interface IProgressionTraitement, etc.) à ta fonction de traitement.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Ou convertir le code natif en code managé.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Citation Envoyé par bacelar Voir le message
    Ou convertir le code natif en code managé.
    j'i pas convertit le code natif en managé. Juste j'ai fait appel du code natif dans la casse wrapper

Discussions similaires

  1. Appel d'une methode de classe par message inopérant dans une dll
    Par Jacques Deyrieux dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 10/08/2010, 08h10
  2. Réponses: 3
    Dernier message: 04/07/2008, 12h00
  3. Réponses: 3
    Dernier message: 30/04/2007, 12h22
  4. Réponses: 1
    Dernier message: 15/04/2007, 20h09
  5. Réponses: 7
    Dernier message: 25/11/2005, 17h11

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