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

Interfaces Graphiques Discussion :

Contrôle activeX (video) dans un GUI et standalone application


Sujet :

Interfaces Graphiques

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut Contrôle activeX (video) dans un GUI et standalone application
    Bonjour à tous,

    Je suis face à un problème que je traine depuis des lustres et que je n'arrive pas à résoudre. Le forum Mathworks n'a pas DU TOUT été aidant, ce problème étant je pense assez spécifique.

    J'ai créé une application en script qui possède un GUI. Dans ce GUI j'ai inclus un contrôle activeX sous la forme d'un lecteur windows media player. Grâce à un bouton je peux loader une vidéo qui se lit sans problème une fois dans Matlab.

    Hors, lorsque je veux créer un .EXE de cette application, cela ne fonctionne pas. Je tiens à préciser que l'utilisateur doit pouvoir ajouter sa propre vidéo, il est donc impossible que la vidéo soit incluse lors de la création du .EXE.

    Lorsque je clique sur mon bouton pour importer la vidéo (ce qui fait appel à une fenêtre pour sélectionner la vidéo), j'entends un "bip" et rien ne se passe. Je répète que je n'ai pas d'erreur si j'effectue la même chose dans Matlab.

    Merci d'avance de votre aide !

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    As-tu essayé d'exécuter ton programme directement depuis le Command Window de MATLAB ?

    Les messages d'erreur devraient apparaitre…
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    Merci, je ne connaissais même pas cette possibilité.

    Alors après avoir effectué cette opération je me suis aperçu que Matlab reste en status "busy" indéfiniment, alors que si cette vidéo est chargée en mode "script", cela ne prends que 1 à 2 secondes.

    En revanche aucun message d'erreur. Si cela peut aider, la vidéo est au format .AVI mais encore une fois, elle se lit très bien dans Matlab. La vidéo fait 55Mb pour environ 1 min de longueur.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Quelle version de MATLAB utilises-tu ? Avec quelle version de Windows ?

    Pourquoi utilises-tu un contrôle ActiveX pour lire la vidéo ?

    Si le problème se situe bien au niveau du contrôle ActiveX, il va falloir procéder par étape. As-tu essayé de mettre les lignes relatives à ce contrôle en commentaires puis de les tester les unes après les autres (en compilant à nouveau à chaque fois) pour déterminer celle qui fait planter MATLAB ? As-tu essayé avec une vidéo moins longue ? As-tu essayé avec différentes compressions (codecs) ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    J'utilise R2014a sous Windows 7 64 bits.

    J'utilise le contrôle activeX car je ne sais pas comment faire pour lire une vidéo autrement dans mon GUI. J'ai directement utilisé la fonction insérer un contrôle activeX dans Guide en sélectionnant Windows Media Player.

    Puis dans mon script, j'utilise les fonctions suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handles.activex1.move([500 204 900 690]);
    (pour bouger la fenêtre vidéo là où je veux qu'elle soit)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handles.activex1.URL=videofilename;
    (pour pouvoir charger le contrôle activeX avec le fichier de l'utilisateur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handles.activex1.controls.play();
    (pour lire cette vidéo une fois un pushbutton pressé)

    J'ai essayé avec une toute petite vidéo en format .AVI de 1Mb et toujours le même problème. Niveau codec le format .AVI devrait être accepté non ? Spécialement si la vidéo se lit très bien en lançant le .M depuis Matlab ?

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par Xen956 Voir le message
    J'utilise le contrôle activeX car je ne sais pas comment faire pour lire une vidéo autrement dans mon GUI.
    Tu pourrais essayer avec VideoReader ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    Je n'ai jamais utilisé cette fonction, je suis un peu perdu comment l'utiliser.

    C'est pas super lent de lire image par image une vidéo ? De ce que j'ai compris pour pouvoir afficher cette vidéo il faut créer un axes que j'update avec les images de la vidéo ?

    Je suis un peu confus quand à cette fonction

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Tout est expliqué ici : Read Video Files
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    Merci !

    Alors j'ai essayé avec cette méthode, mais cela ne marche vraiment pas bien.

    D'une part cela me bourre la RAM au maximum (8GB quand même), et la lecture n'est pas du tout fluide. De plus la qualité n'est pas terrible non plus.

    Du coup je sais pas si c'est une manvaise manip ou autre, mais je suspecte que cette fonction de décomposer une vidéo en images et que les lire à la suite n'est pas forcément rentable.

    J'ai uniquement essayé cela dans un script séparé alors je pense que si j'inclus cela dans mon programme, avec les opérations qu'il fait pendant la lecture de la vidéo ça va être encore pire.

    Ou alors j'ai raté quelque chose ?

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Ce n'était peut être pas une bonne piste…

    Sinon, pourrais-tu essayer avec l'exemple simple donné dans cette discussion : http://www.developpez.net/forums/d13...o/#post7091191 ?
    Voir aussi ce message http://www.developpez.net/forums/d13...x/#post7514891
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    Merci !

    Alors en essayant directement ton exemple dans Matlab, cela fonctionne bien, c'est fluide et rapide. Une fois le .EXE créé pareil ça fonctionne bien (ça met juste 1 grosse minute à loader mais ça marche impeccable par la suite).

    Du coup je vais essayer d'implanter ça dans mon programme et voir si j'obtiens la même chose !

    EDIT : Par contre comment faire pour empêcher la lecture de la vidéo une fois chargée ? En gros juste la charger, mais pas la lire directement.

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    Citation Envoyé par Xen956 Voir le message
    EDIT : Par contre comment faire pour empêcher la lecture de la vidéo une fois chargée ? En gros juste la charger, mais pas la lire directement.
    Pour créer le contrôle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    actx = actxcontrol('WMPlayer.OCX.7');
    Les méthodes associées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >> methods(actx)
     
    Methods for class COM.WMPlayer_OCX_7:
     
    addproperty      delete           get              launchURL        newMedia         propedit         send             
    close            deleteproperty   interfaces       load             newPlaylist      release          set              
    constructorargs  events           invoke           move             openPlayer       save
    Ses propriétés :
    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
    >> get(actx)
                       URL: ''
                 openState: 'wmposPlaylistOpenNoMedia'
                 playState: 'wmppsUndefined'
                  controls: [1x1 Interface.Windows_Media_Player.IWMPControls3]
                  settings: [1x1 Interface.Windows_Media_Player.IWMPSettings2]
              currentMedia: []
           mediaCollection: [1x1 Interface.Windows_Media_Player.IWMPMediaCollection2]
        playlistCollection: [1x1 Interface.Windows_Media_Player.IWMPPlaylistCollection]
               versionInfo: '12.0.7601.18526'
                   network: [1x1 Interface.Windows_Media_Player.IWMPNetwork]
           currentPlaylist: [1x1 Interface.Windows_Media_Player.IWMPPlaylist]
           cdromCollection: [1x1 Interface.Windows_Media_Player.IWMPCdromCollection]
             closedCaption: [1x1 Interface.Windows_Media_Player.IWMPClosedCaption2]
                  isOnline: 1
                     Error: [1x1 Interface.Windows_Media_Player.IWMPError]
                    status: ''
                       dvd: [1x1 Interface.Windows_Media_Player.IWMPDVD]
                   enabled: 1
                fullScreen: 0
         enableContextMenu: 1
                    uiMode: 'full'
              stretchToFit: 0
           windowlessVideo: 0
                  isRemote: 0
         playerApplication: 'Error: Object returned error code: 0xC00D0FD3'
    Au niveau du champs Settings :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >> get(actx.settings)
                   autoStart: 1
                     baseURL: ''
                defaultFrame: ''
                  invokeURLs: 1
                        mute: 0
                   playCount: 1
                        rate: 1
                     balance: 0
                      volume: 50
          enableErrorDialogs: 0
        defaultAudioLanguage: 0
           mediaAccessRights: 'full'
    Donc je dirais (sans avoir testé) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    actx.settings.autoStart = 0;
    Voir la documentation sur le site de Microsoft : Object Model Reference for Scripting (Player Objects et Settings Objects dans la colonne de gauche)
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    Merci de ton aide, je vais essayer. Par contre je n'ai pas bien compris le fonctionnement des contrôles activeX je pense.

    Par exemple dans mon script, j'utilise la fonction suivante pour mettre en pause la vidéo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handles.activex1.controls.pause();
    Et j'ai défini au tout tout début du script la chose suivante qui à mon avis sert à créer le contrôle activeX (mais je ne suis pas sûr) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    handles.activex1.URL=videofilename;
    Du coup le nom de mon contrôle est "activex1" ?

    Comment faire ensuite pour adapter ta solution à mon problème ? Tu dis "pour créer le contrôle", mais cela semble être une autre méthode que celle que j'utilise. En ce moment j'ai le code suivant pour ouvrir la vidéo que j'ai pioché des exemples que tu m'as donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    [handles.filename, handles.pathname] = uigetfile({'*.mov;*.avi;*.mpg4',...
        'Video (*.mov,*.avi,*.mpg4)';'*.*',...
        'All Files (*.*)'},'Ouvrir une vidéo');
        if ~handles.filename
            return
        end
        Player = handles.activex1;
        Player.URL = fullfile(handles.pathname,handles.filename);
        guidata(gcbf,handles)
        actx=actxcontrol('WMPlayer.OCX.7');
        actx.settings.autoStart=0;
    Mais j'ai l'impression que c'est horrible comme forme, et que le fait que l'autostart sur 0 ne fonctionne pas ne m'étonne pas, d'où ma question sur le pourquoi du comment car j'ai clairement pas bien compris comment initialiser l'activeX.

    Merci d'avance !

  14. #14
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 166
    Points
    53 166
    Par défaut
    L'exemple que j'ai donné précédemment était dans le cas de la création de l'interface graphique à la main, sans le GUIDE.
    C'était pour te montrer tous les paramètres que tu pouvais gérer.

    Avec le GUIDE, le contrôle est automatiquement créé et son identifiant est handles.activex1

    Dans ton cas, tu dois faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    [handles.filename, handles.pathname] = uigetfile({'*.mov;*.avi;*.mpg4',...
        'Video (*.mov,*.avi,*.mpg4)';'*.*',...
        'All Files (*.*)'},'Ouvrir une vidéo');
        if ~handles.filename
            return
        end
        Player = handles.activex1;
        Player.settings.autoStart = 0;
        Player.URL = fullfile(handles.pathname,handles.filename);
    L'identifiant handles.activex1 correspond à l'identifiant actx dans mon précédent exemple.

    C'est plus clair ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    Oui là j'ai compris !

    Pour revenir au problème principal, j'ai donc essayé d'intégrer ce petit bout de code dans mon programme, mais cela ne fonctionne toujours pas. Je répète que grâce à ton fichier "wmplayer_guide" cela fonctionne bien.

    Dans mon programme j'ai désactivé les boutons de contrôle windows media player. L'utilisateur utilise des pushbutton pour démarrer/arrêter la vidéo, couper le son. Cela n'est pas un problème, j'arrive à faire fonctionner ça dans ton programme en utilisant le bouton "2".

    Sauf que chez moi Matlab reste en mode "busy" et rien ne se passe à l'écran lorsque je charge la vidéo et presse sur mon pushbutton play.

    Je ne peux pas vraiment poster mon code ici, il y a 600 lignes de code, mais je n'arrive pas à mettre le doigt sur le problème.

  16. #16
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    J'ai enfin pu m'y remettre sérieusement, et j'ai réussi à résoudre 1-2 petits soucis, mais ça marche toujours pas correctement.

    Comme je l'ai déjà écrit, une fois la vidéo chargée, je commande moi-même grâce à un pushbutton la lecture et la pause de la vidéo. C'est celui qui cloche en ce moment. Je précise aussi que tout fonctionne parfaitement sous Matlab.

    La raison pour laquelle je commande la vidéo avec le bouton c'est que une fois appuyé, je plot des trucs dans des axes EN FONCTION de la position dans la vidéo.

    En revanche, lorsque j'utilise le bouton play du lecteur windows media, la vidéo se lit sans problème, mais bien sûr mes graphs ne sont pas mis à jour.

    Serait-il plus intelligeant de laisser à l'utilisateur les commande windows media player et de faire mes graphs (qui sont en temps réel) en questionnant en permanance le lecteur pour savoir dans quelle position il est ? C'est un peu similaire à ce que j'ai en ce moment, mais ça permetterait de séparer la commande du lecteur, et les opérations mathématiques.

  17. #17
    Membre à l'essai
    Inscrit en
    Avril 2012
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 59
    Points : 21
    Points
    21
    Par défaut
    J'ai repris de zéro ce petit projet et ça a l'air de mieux fonctionner. Il devait y avoir un truc bizarre dans mon truc initial.

    Par contre, comment faire pour changer les propriétés du lecteur ? Par exemple je veux désactiver les boutons play et autres de Windows Media Player, le context menu. C'est listé dans les propriétés que tu as mis Dut mais je n'arrive pas à désactiver ça.

Discussions similaires

  1. [XL-2007] Contrôle ActiveX disparaït dans feuille de calcul
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/03/2014, 08h47
  2. Compiler GUI en standalone Application
    Par Nowoday dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 08/04/2011, 20h32
  3. Utilisation de activex dans le GUI
    Par Wassim123 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 28/10/2008, 14h08
  4. événements dans un contrôle ActiveX
    Par ziz2005 dans le forum MFC
    Réponses: 3
    Dernier message: 06/11/2006, 12h28
  5. Contrôle ActiveX dans Access
    Par Mahefasoa dans le forum Access
    Réponses: 4
    Dernier message: 09/08/2006, 10h37

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