Bonjour,
Je veux intégrer un objet COM .tlb dans mon application MFC
j'ai ajouter ce fichier sur mon projet mais je sais pas comment le gérer, j'ai aucune idée sur comment le faire
Merci d'avance
Bonjour,
Je veux intégrer un objet COM .tlb dans mon application MFC
j'ai ajouter ce fichier sur mon projet mais je sais pas comment le gérer, j'ai aucune idée sur comment le faire
Merci d'avance
Fais un clique droit sur ton projet comme si tu ajoutais une classe.
Et tu verras dans la fenêtre de l'assistant "Ajoute de Classes" comment ajouter une classe à partir d'une librairie de type.
j'ai pas compris ce que vous venez de dire
j'ai déja intégrer le .tlb dans mon projet mais après je plante
je veux afficher l'interface associée à ce ce tlb
Merci d'avance
salut intégrer un objet COM ( ocx/dll) dans un projet est plus complexe;
il faut au préalable utiliser la directive #import nom_dll_nom_interface
Puis appeler CoCreateInstance et QueryInterface pour créer des pointeurs sur les méthodes de l'objet COM.
En ajoutant la dll /objet COM ( ocx /dll ) Visual C++ va générer un fichier d'interfaces et les ID des interfaces de l'obet
Je conseille de regarder dans le MSDN c'est trop complexe à expliquer ici..
Bonjour 3aychoucha.
Pourquoi avoir créer un nouveau sujet ->
http://www.developpez.net/forums/d99...ivex-winforms/
Sinon, j'en conclu que tu as compris l'histoire des tlb.
Donc ensuite un point de départ, dans un fichier d'en-tête :
Evidemment il faudra remplacer par les bons noms. A partir de là intellisense fonctionnera.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 #import "ControleActiveX.tlb" raw_interfaces_only using namespace ControleActiveX;
Exemple d'utilisation :
Bien sûr, c'est juste un exemple, les noms de méthodes et les paramètres seront différents.
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 ControleActiveX::IControleActiveXPtr m_pControleActiveX = NULL; bool m_bDllInitialized = false; try{ ControleActiveX::IControleActiveXPtr pControleActiveX(__uuidof(ControleActiveX::CControleActiveX)); m_pControleActiveX = pControleActiveX; pControleActiveX = NULL; // le code de retour de la méthode de l'ActiveX long lRet = -1; _bstr_t bstr("Une chaîne de caractère à passer en paramètre"); BSTR Bstr; Bstr = bstr.copy(); m_pControleActiveX->UneMethode(Bstr, &lRet); if(lRet == 0) m_bDllInitialized = true; } catch(...){ if(m_pControleActiveX){ m_pControleActiveX = NULL; }
Il faudrait aussi le code d'erreur, puisqu'une dll COM retourne un HRESULT. Dans cette exemple, je me base sur un code d'erreur personnalisé (lRet).
PS : ne pas oublier d'initialiser COM avant (CoInitialize).
Open Source Microsoft MediaFoundation
https://github.com/mofo7777
http://jeux.developpez.com/faq/directx/?page=dshow
Merci Mat.M
Merci moldavi, en fait j'ai crée cette nouvelle discussion car je crois qu'il ya une différence entre l'intégration d'un activeX et d'un .tlb
Bonjour.
Un fichier .tlb ne s'enregistre pas sur le système. C'est l'activeX à partir duquel on génère le tlb qui doit être enregistré.
Open Source Microsoft MediaFoundation
https://github.com/mofo7777
http://jeux.developpez.com/faq/directx/?page=dshow
J'ai pas de dll
j'ai seulement un .tlb et un .exe
et il me faut intégrer l'interface du point exe( c'est un .vi) sur une boite de dialogue mfc
Bonjour.
Je vous ai déjà posé la question : êtes-vous certain que le .exe est un contrôle activeX, du moins qu'il répond au critère d'un objet COM ?
Donnez-nous plus d'information sur l'exe et sur votre code, on tourne en rond.
Open Source Microsoft MediaFoundation
https://github.com/mofo7777
http://jeux.developpez.com/faq/directx/?page=dshow
Bonjour,
c'est un activeX Automation server et moi je veux faire la partie client
Pour le code de mon application c'est une simple application dialog based
puis j'ai suivi ce code
code:
j'ai un problème au niveau du CreateInstance, il m'affiche
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66 // Acquire.cpp : This source code is an Automation client. It calls the // LabVIEW 5.0's automation server. It loads the VI Acquire 1 Point from 1 Channel // VI and runs it. // #include "windows.h" #include "stdio.h" #include "conio.h" #include <stdlib.h> #include <string.h> #include <iostream.h> #import "c:\lv50\RESOURCE\labview50.tlb" main() { VARIANT sample; int size = 0; char Path[1000]; // define the path to the application char VIPath[100] = "\\examples\\daq\\anlogin\\anlogin.llb\\Acquire 1 Point from 1 Channel.vi"; // generate a namespace declaration to and identify and assign a name to a declarative region. // In this case we are assigning the LabVIEW. using namespace LabVIEW; _ApplicationPtr pLV; VirtualInstrumentPtr pVI; CoInitialize(NULL); do { pLV.CreateInstance("LabVIEW.Application"); if (pLV == NULL) { printf("LV must be running, exiting ...\n"); break; } pVI.CreateInstance("LabVIEW.VirtualInstrument"); strcpy(Path, pLV->ApplicationDirectory); strcat(Path, VIPath); // assign an object reference to the pVI. pVI = pLV->GetVIReference(LPCTSTR(Path)); // configure the VI to show its front panel on Call. pVI->ShowFPOnCall = TRUE; pVI->SetControlValue("device","1"); pVI->SetControlValue("channel", "0"); //Transfer control to LabVIEW with the Run statement. The call function passes the parameter names // and data to the LabVIEW VI. pVI->Run(); sample = pVI->GetControlValue("sample"); printf("The sample Value is %f \n", sample.fltVal); while( !kbhit() ) cout << "Hit any key to continue\r"; fflush( stdin ); pLV->AutomaticClose=0; } while (0); CoUninitialize(); return (0); }càd que le pLV est null et il n'y avait pas de creation de l'ainstance de l'applicationLV must be running, exiting ...
Merci d'avance
Bonjour.
J'imagine que l'utilisation d'un activeX Automation server est un peu plus complexe qu'une simple dll COM. Il doit y avoir de la gestion droits d'utilisateurs en plus. Je vais me renseigner un peu plus, mais la réponse devrait se trouver sur les sites de la MSDN.
Je ne comprends pas la phrase "je veux faire la partie client", un activeX on l'utilise dans un programme...
Open Source Microsoft MediaFoundation
https://github.com/mofo7777
http://jeux.developpez.com/faq/directx/?page=dshow
Bonjour.
En regardant 5 minutes sur le net, j'ai trouvé sur le site de LabView, un code source qui explique l'utilisation de cet activeX (lvdemo.zip):
http://zone.ni.com/devzone/cda/epd/p/id/750
L'avez-vous téléchargé ?
Open Source Microsoft MediaFoundation
https://github.com/mofo7777
http://jeux.developpez.com/faq/directx/?page=dshow
Bonjour,
le code que je l'ai affiché je l'ai pris aussi du site de labView
http://zone.ni.com/devzone/cda/epd/p...#0requirements
mais au niveau de "GetVIReference", une exeption est généréeException Microsoft C++*: _com_error à l'emplacement mémoire 0x002ae944..
Partager