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 :

Propriétés activeX en C#


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Par défaut Propriétés activeX en C#
    Bonjour,

    Aujourd'hui je suis capable de coder un objet activeX en C# par l'intermédiaire d'un userControl C#. Il suffit pour cela d'ajouter quelques lignes que voici dans ma classe héritant de UserControl :
    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
    36
    37
    38
    39
    40
    41
    42
    43
     
    public partial class MonUserControl : UserControl
        {
            #region	Code interoperabilité activeX - C# à ne pas supprimer
            [ComRegisterFunction]
            public static void RegisterClass(Type t)
            {
                string keyName = @"CLSID\" + t.GUID.ToString("B");
                using (RegistryKey key =
                Registry.ClassesRoot.OpenSubKey(keyName, true))
                {
                    key.CreateSubKey("Control").Close();
                    using (RegistryKey subkey = key.CreateSubKey("MiscStatus"))
                    {
                        subkey.SetValue("", "131457");
                    }
                    using (RegistryKey subkey = key.CreateSubKey("TypeLib"))
                    {
                        Guid libid = Marshal.GetTypeLibGuidForAssembly(t.Assembly);
                        subkey.SetValue("", libid.ToString("B"));
                    }
                    using (RegistryKey subkey = key.CreateSubKey("Version"))
                    {
                        Version ver = t.Assembly.GetName().Version;
                        string version = string.Format("{0}.{1}", ver.Major, ver.Minor);
                        if (version == "0.0") version = "1.0";
                        subkey.SetValue("", version);
                    }
                }
            }
     
            [ComUnregisterFunction]
            public static void UnregisterClass(Type t)
            {
                // Delete entire CLSID\{clsid} subtree
                string keyName = @"CLSID\" + t.GUID.ToString("B");
                Registry.ClassesRoot.DeleteSubKeyTree(keyName);
            }
            #endregion
     
     
    /*La je peux commencer à coder comme si je développais un objet UserControl C# basique. */
            private int unAttributExemple;
    En toute honnêteté, je ne comprends pas réellement la signification de ces lignes, mais cela marche donc jusqu'ici je suis content. Mais j'ai un petit problème. Mon UserControl est sensé s'insérer sur des slides powerpoint et interagir avec l'utilisateur. Le problème est que mes attributs de classe C# (de mon UserControl et des autres classes) se sont pas sauvegardées dans le document (par exemple unAttributExemple dans le code ci-dessus). Du coup je perds toutes mes données quand je réouvre un document ppt sauvegardé avec mes UserControl et il n'y a plus d'intérêt à la chose. Alors peut être avez-vous déjà rencontré ce problème ou avez-vous une idée pour le résoudre.

    Personnellement je pense que si j'avais accès aux propriétés du control activeX, mes données seraient enregistrées dans le fichier .ppt... Mais je ne vois pas comment faire.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Par défaut
    Pas d'idée ? Décidément ce sujet d'activeX piloté par C# n'est pas quelque chose d'évident... Il serait temps que Microsoft se penche dessus et développe les API nécessaires au pilotage simple d'objet COM et activeX en .NET.

    PS : Je reformule tout de même ma demande : Ce que je souhaite c'est créer des propriétés custom (pas celles par défaut) afin d'y stocker des infos. Y a t il une fonction du framwork qui fasse cela ? Toute solution est la bienvenue.

Discussions similaires

  1. [VB6] probléme avec propriété ActiveX
    Par Lucas42 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/06/2006, 16h51
  2. Réponses: 13
    Dernier message: 14/02/2006, 17h45
  3. Propriété des ActiveX
    Par nico-pyright(c) dans le forum MFC
    Réponses: 16
    Dernier message: 16/02/2004, 14h03
  4. [ActiveX] Propriété "Picture" dans un contrôle util
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/12/2002, 15h59
  5. [ActiveX] Visibilité d'une propriété
    Par paradise dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/11/2002, 18h33

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