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 :

aide/doc sur marshaling et HandleRef


Sujet :

C++/CLI

  1. #1
    Membre régulier
    Profil pro
    embedded software engineer
    Inscrit en
    Juin 2002
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : embedded software engineer

    Informations forums :
    Inscription : Juin 2002
    Messages : 181
    Points : 101
    Points
    101
    Par défaut aide/doc sur marshaling et HandleRef
    Bonjour,
    J'ai mis ce code dans mon prog c#:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SetForegroundWindow(new HandleRef(this, this.Handle));
    this.contextMenuStrip_fenetre.Show(this, this.PointToClient(Cursor.Position));
    Il fonctionne à peu près concorrectement,mais je ne le comprends pas.

    J'ai un peu de mal à cerner le tout: marshaling et HandleRef
    malgré la MSDN
    selon votre experience, auriez-vous un bon document à conseiller?
    merci.

  2. #2
    Membre régulier
    Profil pro
    embedded software engineer
    Inscrit en
    Juin 2002
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : embedded software engineer

    Informations forums :
    Inscription : Juin 2002
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    pour info:
    mon programme "en tache de fond" affiche un contextMenuStrip sur une HotKey.

    dans mon prog, ma classe/this est une CForm.

    Sur event, je pensais afficher uniquement mon ContextMenuStrip et pas ma CForm:
    voici mon code, mais cela fonctionne très très mal:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SetForegroundWindow(new HandleRef(this.contextMenuStrip_fenetre, this.contextMenuStrip_fenetre.Handle));
    this.contextMenuStrip_fenetre.Show(this.contextMenuStrip_fenetre.PointToClient(Cursor.Position));
    pourquoi?

  3. #3
    Membre régulier
    Profil pro
    embedded software engineer
    Inscrit en
    Juin 2002
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : embedded software engineer

    Informations forums :
    Inscription : Juin 2002
    Messages : 181
    Points : 101
    Points
    101
    Par défaut marshal ok, mais pas encore les handles/fenetres
    Après quelques lectures des contributions de nico-pyright (qui sont très concrètes ), je comprend le passage en non managé.

    Par contre je ne comprend toujours la gestion des handles avec la fonction HandleRef().
    Plus précisément c'est entre la gestion des fenetre en WIN32 avec les handles, et la gestion des fenetres en .net/c#.
    cela fait un peu doublon.
    Je vais bientot pouvoir mettre délesté.

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    c'est une facon d'encapsuler les pointeurs pour éviter qu'ils ne soient libérés par le GC quand il ne faut pas

  5. #5
    Membre régulier
    Profil pro
    embedded software engineer
    Inscrit en
    Juin 2002
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : embedded software engineer

    Informations forums :
    Inscription : Juin 2002
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    Bonjour,
    Merci, je comprends maintenant, en plus de mes lectures.
    Finalement, de file en aiguille, c'est plus sur la gestion des handles par l'API WIN32 qu'il me reste des zones "floues", et donc un autre sujet.

    J'ai VS2005 pro sp1,est-ce dans les liens MSDN VS80 ou VS85? car pb sur certains liens (le about met 8.0.5 et il recherche par défaut VS80).

    J'ai l'impression, que j'aurai du me mettre au C++/CLI plus que C# ( je viens du C embarqué). Le C++/CLI me parait plus d'une structure plus logique, vu que je m'interesse au win32.

  6. #6
    Membre régulier
    Profil pro
    embedded software engineer
    Inscrit en
    Juin 2002
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : embedded software engineer

    Informations forums :
    Inscription : Juin 2002
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    Maintenant, plus besoin d'afficher par SetForegroundWindow la Form, ce que je ne comprennais pas et trouvais inutile.
    Seul le ContextMenuStrip me suffit, et j'ai compris que la base des fenêtres graphiques .net est la classe Controls dont hérite form et ContetMenuStrip.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SetForegroundWindow(new HandleRef(this.contextMenuStrip_fenetre, this.contextMenuStrip_fenetre.Handle));
    this.contextMenuStrip_fenetre.Show(Cursor.Position);
    Par contre, j'ai des doutes sur le HandleRef que je fais à chaque hotkey, sans jamais le librer explicitement, a voir.....

  7. #7
    Membre régulier
    Profil pro
    embedded software engineer
    Inscrit en
    Juin 2002
    Messages
    181
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : embedded software engineer

    Informations forums :
    Inscription : Juin 2002
    Messages : 181
    Points : 101
    Points
    101
    Par défaut
    donc, j'ai un PB, le NB de GC handle augmente à chaque fois:
    J'utilise process explorer, je ne sais pas si c'est l'outil le plus adapté.
    Images attachées Images attachées  

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

Discussions similaires

  1. doc sur les fonctions
    Par masterfab dans le forum C
    Réponses: 18
    Dernier message: 23/06/2005, 17h55
  2. Doc sur Debug de Ms-Dos
    Par gtr dans le forum Assembleur
    Réponses: 13
    Dernier message: 23/09/2003, 09h06
  3. doc sur interbase
    Par zopeman dans le forum InterBase
    Réponses: 3
    Dernier message: 04/08/2003, 16h10
  4. recherche doc sur les courbe de bézier
    Par amaury pouly dans le forum OpenGL
    Réponses: 4
    Dernier message: 29/04/2003, 22h41
  5. Réponses: 4
    Dernier message: 27/03/2002, 11h03

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