Problème de Port Com dans un ActiveX

Résolu
cs_Ayato Messages postés 14 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 13 novembre 2006 - 10 août 2005 à 12:29
cs_Ayato Messages postés 14 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 13 novembre 2006 - 18 août 2005 à 11:50
Bonjour









<!--[if !supportEmptyParas]--><!--[endif]--> Je cherche en ce moment a développer un ActiveX utilisant
les port Com.

Celui-ci est développé
sous VC++ en MFC (je sais il est plus conseillée de le développer en ATL, mais
vu mes connaissance…).










<!--[if !supportEmptyParas]--><!--[endif]--> Dans cette ActiveX je gère les port Com en utilisant le
composant Mscom de Microsoft.

Pour réaliser ceci je me suis appuyée sur un exemple de la
MSDN nommée : VCTERM.

(http://msdn.microsoft.com/library/fre/default.asp?url=/library/fre/vcsample/html/_sample_mfc_vcterm.asp)











<!--[if !supportEmptyParas]--><!--[endif]-->J’ai donc commencé a développer un pre-ActiveX dans le quel
j’ai crée toute mes fonctions et traitements. Une fois ce pre-ActiveX crée et fonctionnant
parfaitement j’ai crée l’ActiveX. Celui-ci réaliser et compilé j’ai voulu le tester.
<!--[if !supportEmptyParas]-->
Et ô surprise il ne marche pas. En effet au moment ou je
veut instancié mon composant dans un autre projet (sous VB6) celui-ci me fait
une belle erreur windows.

<!--[endif]-->


Apres quelque test et recherche j’ai découvert que c’est une
instruction qui ma été fournie par l’exemple Windows qui fait tout
plantée :






<!--[if !supportEmptyParas]--> <!--[endif]-->// Création de
l'objet MSCOMM32 OLE Control.
















->> if
(!m_commctrl.Create(NULL,0,CRect(0,0,0,0),this,ID_COMMCTRL))

{

TRACE0("Echeque de la création
du composant MSComm \n");

return -1;

}










<!--[if !supportEmptyParas]--> Ce qui me parait bizarre c’est que cette instruction
fonctionne parfaitement sous un projet d’application MFC et pas pour un projet
ActiveX MFC.







<!--[if !supportEmptyParas]--><!--[endif]--> Si quelqu’un a une idée de comment résoudre ce problème…










<!--[if !supportEmptyParas]--><!--[endif]--> Merci d´avance!

1 réponse

cs_Ayato Messages postés 14 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 13 novembre 2006
18 août 2005 à 11:50
Slt a tous , comme j’ai trouvé la réponseje vous le signal a tout fin utile. Il se
peux que d’autre auront le même genre de problème.






Le problème ne venait pas du port COM mais du faite que mon
ActiveX MFC n’ai pas capable de prendre ne charge un autre activeX.








<!--[if !supportEmptyParas]--><!--[endif]--> Pour qu’un ActiveX MFC puise utilisez d’autre ActiveX :

<!--[endif]-->




<!--[if !supportLists]-->1)<!--[endif]-->Lors de la création du projet de type ‘MFC ActiveX Control’, dans
les options de l’assistant, sélectionnez Acts
as a simple frame control ’ (à vérifier, cette
option n’est peut-être pas nécessaire).




<!--[if !supportLists]-->2)<!--[endif]-->Générez le projet, et rajoutez un appel à AfxEnableControlContainer
dans la méthode InitInstance de la classe Application.


















BOOL CmfcTestApp::InitInstance()

{

BOOL bInit = COleControlModule::InitInstance();

AfxEnableControlContainer();

if (bInit)

{


// TODO: Add your own module initialization code
here.

}

return
bInit;

}

3)<!--[endif]-->Rajoutez une classe encapsulant le contrôle ActiveX ( dans mon
cas : mscomm32.ocx)

4)<!--[endif]-->Initialisez l’activeX en appelant sa méthode Create
lors du premier appel de OnDraw.


Et voilà le tour est jouée.
3
Rejoignez-nous