Création d'un activex instanciable avec CreateObject
3 réponses
LudoO
Bonjour,
Je souhaite cr=E9er un controle Activex (rtfbox utilisant=20
RichEd20.dll).
L'utilisation en mode "Early Binding" fonctionne sans pb :
Dim obj As RichEdit.rtfBox
Set obj =3D New RichEdit.rtfBox
Par contre, je voudrais cr=E9er dynamiquement plusieurs=20
instances de ce controle afin d'obtenir un formulaire.
J'utilise CreateObject("Late Binding").
Dim obj As object
Set obj =3D CreateObject("RichEdit.rtfBox")
Malheureusement, j'obtiens un message d'erreur =E0 la=20
cr=E9ation :
erreur 398 "Site client non disponible"
Apres qq recherches, je comprends que je fais appel =E0=20
UserControl lors de UserControl_InitProperties alors qu'il=20
n'existe pas encore.
- UserControl.Ambient.UserMode
- UserControl.hwnd
- UserControl.Parent.hwnd
J'ai trouv=E9 une explication indiquant qu'il est necessaire=20
d'impl=E9menter une interface IDispatch pour utiliser=20
createObject et donc rendre disponible l'acces =E0=20
UserControl lors de InitProperties.
"CreateObject call invokes CoCreateInstance with the=20
object's CLSID and requests a pointer to the object's=20
IDispatch interface."=20
(http://sern.ucalgary.ca/Courses/CPSC/547/W2000/webnotes/CO
M/COM.html)
Une m=E9thode alternative fonctionne
set obj =3D Controls.Add("RichEdit.rtfBox","rtfName")
mais necessite de passer par l'objet OBJECT pour manipuler=20
les m=E9thodes et propri=E9t=E9s de l'ocx.
obj.object.text=3D"hello"
alors que les methodes de base se trouvent toujours sous=20
obj :
obj.visible =3D true
Est ce que mes explications sont exactes ?
Comment modifier mon controle activex de facon a ce que je=20
puisse en cr=E9er des instances dynamiquement avec=20
CreateObject ?
Utiliser une typelib OLE... Impl=E9menter une gestion de=20
IDispatch... Autre chose...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ng
Salut,
Avec quoi as tu créé ton controle ? VB ? VC++?
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
LudoO wrote:
Bonjour,
Je souhaite créer un controle Activex (rtfbox utilisant RichEd20.dll). L'utilisation en mode "Early Binding" fonctionne sans pb : Dim obj As RichEdit.rtfBox Set obj = New RichEdit.rtfBox
Par contre, je voudrais créer dynamiquement plusieurs instances de ce controle afin d'obtenir un formulaire. J'utilise CreateObject("Late Binding").
Dim obj As object Set obj = CreateObject("RichEdit.rtfBox")
Malheureusement, j'obtiens un message d'erreur à la création : erreur 398 "Site client non disponible"
Apres qq recherches, je comprends que je fais appel à UserControl lors de UserControl_InitProperties alors qu'il n'existe pas encore. - UserControl.Ambient.UserMode - UserControl.hwnd - UserControl.Parent.hwnd
J'ai trouvé une explication indiquant qu'il est necessaire d'implémenter une interface IDispatch pour utiliser createObject et donc rendre disponible l'acces à UserControl lors de InitProperties.
"CreateObject call invokes CoCreateInstance with the object's CLSID and requests a pointer to the object's IDispatch interface." (http://sern.ucalgary.ca/Courses/CPSC/547/W2000/webnotes/CO M/COM.html)
Une méthode alternative fonctionne set obj = Controls.Add("RichEdit.rtfBox","rtfName") mais necessite de passer par l'objet OBJECT pour manipuler les méthodes et propriétés de l'ocx. obj.object.text="hello" alors que les methodes de base se trouvent toujours sous obj : obj.visible = true
Est ce que mes explications sont exactes ? Comment modifier mon controle activex de facon a ce que je puisse en créer des instances dynamiquement avec CreateObject ? Utiliser une typelib OLE... Implémenter une gestion de IDispatch... Autre chose...
Merci de votre réponse
LudoO
Salut,
Avec quoi as tu créé ton controle ? VB ? VC++?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
LudoO wrote:
Bonjour,
Je souhaite créer un controle Activex (rtfbox utilisant
RichEd20.dll).
L'utilisation en mode "Early Binding" fonctionne sans pb :
Dim obj As RichEdit.rtfBox
Set obj = New RichEdit.rtfBox
Par contre, je voudrais créer dynamiquement plusieurs
instances de ce controle afin d'obtenir un formulaire.
J'utilise CreateObject("Late Binding").
Dim obj As object
Set obj = CreateObject("RichEdit.rtfBox")
Malheureusement, j'obtiens un message d'erreur à la
création :
erreur 398 "Site client non disponible"
Apres qq recherches, je comprends que je fais appel à
UserControl lors de UserControl_InitProperties alors qu'il
n'existe pas encore.
- UserControl.Ambient.UserMode
- UserControl.hwnd
- UserControl.Parent.hwnd
J'ai trouvé une explication indiquant qu'il est necessaire
d'implémenter une interface IDispatch pour utiliser
createObject et donc rendre disponible l'acces à
UserControl lors de InitProperties.
"CreateObject call invokes CoCreateInstance with the
object's CLSID and requests a pointer to the object's
IDispatch interface."
(http://sern.ucalgary.ca/Courses/CPSC/547/W2000/webnotes/CO
M/COM.html)
Une méthode alternative fonctionne
set obj = Controls.Add("RichEdit.rtfBox","rtfName")
mais necessite de passer par l'objet OBJECT pour manipuler
les méthodes et propriétés de l'ocx.
obj.object.text="hello"
alors que les methodes de base se trouvent toujours sous
obj :
obj.visible = true
Est ce que mes explications sont exactes ?
Comment modifier mon controle activex de facon a ce que je
puisse en créer des instances dynamiquement avec
CreateObject ?
Utiliser une typelib OLE... Implémenter une gestion de
IDispatch... Autre chose...
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
LudoO wrote:
Bonjour,
Je souhaite créer un controle Activex (rtfbox utilisant RichEd20.dll). L'utilisation en mode "Early Binding" fonctionne sans pb : Dim obj As RichEdit.rtfBox Set obj = New RichEdit.rtfBox
Par contre, je voudrais créer dynamiquement plusieurs instances de ce controle afin d'obtenir un formulaire. J'utilise CreateObject("Late Binding").
Dim obj As object Set obj = CreateObject("RichEdit.rtfBox")
Malheureusement, j'obtiens un message d'erreur à la création : erreur 398 "Site client non disponible"
Apres qq recherches, je comprends que je fais appel à UserControl lors de UserControl_InitProperties alors qu'il n'existe pas encore. - UserControl.Ambient.UserMode - UserControl.hwnd - UserControl.Parent.hwnd
J'ai trouvé une explication indiquant qu'il est necessaire d'implémenter une interface IDispatch pour utiliser createObject et donc rendre disponible l'acces à UserControl lors de InitProperties.
"CreateObject call invokes CoCreateInstance with the object's CLSID and requests a pointer to the object's IDispatch interface." (http://sern.ucalgary.ca/Courses/CPSC/547/W2000/webnotes/CO M/COM.html)
Une méthode alternative fonctionne set obj = Controls.Add("RichEdit.rtfBox","rtfName") mais necessite de passer par l'objet OBJECT pour manipuler les méthodes et propriétés de l'ocx. obj.object.text="hello" alors que les methodes de base se trouvent toujours sous obj : obj.visible = true
Est ce que mes explications sont exactes ? Comment modifier mon controle activex de facon a ce que je puisse en créer des instances dynamiquement avec CreateObject ? Utiliser une typelib OLE... Implémenter une gestion de IDispatch... Autre chose...
Merci de votre réponse
LudoO
Ludoo
En VB6 bien sur
-----Message d'origine----- Salut,
Avec quoi as tu créé ton controle ? VB ? VC++?
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
LudoO wrote:
Bonjour,
Je souhaite créer un controle Activex (rtfbox utilisant RichEd20.dll). L'utilisation en mode "Early Binding" fonctionne sans
pb :
Dim obj As RichEdit.rtfBox Set obj = New RichEdit.rtfBox
Par contre, je voudrais créer dynamiquement plusieurs instances de ce controle afin d'obtenir un formulaire. J'utilise CreateObject("Late Binding").
Dim obj As object Set obj = CreateObject("RichEdit.rtfBox")
Malheureusement, j'obtiens un message d'erreur à la création : erreur 398 "Site client non disponible"
Apres qq recherches, je comprends que je fais appel à UserControl lors de UserControl_InitProperties alors
qu'il
n'existe pas encore. - UserControl.Ambient.UserMode - UserControl.hwnd - UserControl.Parent.hwnd
J'ai trouvé une explication indiquant qu'il est
necessaire
d'implémenter une interface IDispatch pour utiliser createObject et donc rendre disponible l'acces à UserControl lors de InitProperties.
"CreateObject call invokes CoCreateInstance with the object's CLSID and requests a pointer to the object's IDispatch interface."
Une méthode alternative fonctionne set obj = Controls.Add("RichEdit.rtfBox","rtfName") mais necessite de passer par l'objet OBJECT pour
manipuler
les méthodes et propriétés de l'ocx. obj.object.text="hello" alors que les methodes de base se trouvent toujours sous obj : obj.visible = true
Est ce que mes explications sont exactes ? Comment modifier mon controle activex de facon a ce que
je
puisse en créer des instances dynamiquement avec CreateObject ? Utiliser une typelib OLE... Implémenter une gestion de IDispatch... Autre chose...
Merci de votre réponse
LudoO
.
En VB6
bien sur
-----Message d'origine-----
Salut,
Avec quoi as tu créé ton controle ? VB ? VC++?
--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
LudoO wrote:
Bonjour,
Je souhaite créer un controle Activex (rtfbox utilisant
RichEd20.dll).
L'utilisation en mode "Early Binding" fonctionne sans
pb :
Dim obj As RichEdit.rtfBox
Set obj = New RichEdit.rtfBox
Par contre, je voudrais créer dynamiquement plusieurs
instances de ce controle afin d'obtenir un formulaire.
J'utilise CreateObject("Late Binding").
Dim obj As object
Set obj = CreateObject("RichEdit.rtfBox")
Malheureusement, j'obtiens un message d'erreur à la
création :
erreur 398 "Site client non disponible"
Apres qq recherches, je comprends que je fais appel à
UserControl lors de UserControl_InitProperties alors
qu'il
n'existe pas encore.
- UserControl.Ambient.UserMode
- UserControl.hwnd
- UserControl.Parent.hwnd
J'ai trouvé une explication indiquant qu'il est
necessaire
d'implémenter une interface IDispatch pour utiliser
createObject et donc rendre disponible l'acces à
UserControl lors de InitProperties.
"CreateObject call invokes CoCreateInstance with the
object's CLSID and requests a pointer to the object's
IDispatch interface."
-- Nicolas G. FAQ VB : http://faq.vb.free.fr API Guide : http://www.allapi.net Google Groups : http://groups.google.fr/ MZ-Tools : http://www.mztools.com/
LudoO wrote:
Bonjour,
Je souhaite créer un controle Activex (rtfbox utilisant RichEd20.dll). L'utilisation en mode "Early Binding" fonctionne sans
pb :
Dim obj As RichEdit.rtfBox Set obj = New RichEdit.rtfBox
Par contre, je voudrais créer dynamiquement plusieurs instances de ce controle afin d'obtenir un formulaire. J'utilise CreateObject("Late Binding").
Dim obj As object Set obj = CreateObject("RichEdit.rtfBox")
Malheureusement, j'obtiens un message d'erreur à la création : erreur 398 "Site client non disponible"
Apres qq recherches, je comprends que je fais appel à UserControl lors de UserControl_InitProperties alors
qu'il
n'existe pas encore. - UserControl.Ambient.UserMode - UserControl.hwnd - UserControl.Parent.hwnd
J'ai trouvé une explication indiquant qu'il est
necessaire
d'implémenter une interface IDispatch pour utiliser createObject et donc rendre disponible l'acces à UserControl lors de InitProperties.
"CreateObject call invokes CoCreateInstance with the object's CLSID and requests a pointer to the object's IDispatch interface."