Bonjour,
je suis en train de développer un activeX en C++ avec Visual Studio .NET, et j'ai un problème de bug (plantage de IE) quand je lance une méthode de mon activeX à partir du code JavaScript, et cette erreur vient apparemment d'une instanciation dans cette méthode.
je m'explique (un peu longuement):
la méthode de l'activeX
Code :
- BSTR CActiveXCtrl::Init(VARIANT_BOOL _a, VARIANT_BOOL _b)
- {
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
- //L'instanciation qui pose problème
- int res = funct->Init(true,true);
- strcpy(resultat, funct->GetText(res));
- CString strResult(resultat);
- return strResult.AllocSysString();
- }
|
la fonction init:
Code :
- int Functions::Init(bool _a, bool _b) {
- this->myIPB = *(new IPB(_a, _b));
- return this->myIPB.Init();
- }
|
le constructeur de la classe IPB:
Code :
- IPB::IPB(bool _a, bool _b) {
- pObject = NULL;
- this->res = _a;
- this->comp = _b;
- }
|
Quand je lance la méthode Init(true,true), internet explorer plante et mon debug me dit:
Code :
- int Functions::Init(bool _a, bool _b) {
- >>>erreur ici this->myIPB = *(new IPB(_a, _b));
- return this->myIPB.Init();
- }
|
avec:
this 0xcdcdcdcd
|_>myIPB {pObject=??? res=??? comp=???}
|_> pObject CXX0030 expression cannot be evaluated
|_> res CXX0030 expression cannot be evaluated
|_> comp CXX0030 expression cannot be evaluated
Si cela peut aider, l'erreur retournée par Internet Explorer est
Citation :
Unhandled exception at 0x013d3841 (ActiveX.ocx) in IEXPLORE.EXE: 0xC0000005: Access violation writing location 0xcdcdcdd1.
|
d'autre part, j'ai instancié cette méthode dans le constructeur de mon activeX, et à ce niveau là, ça passe , plus d'erreur!
voyez-vous quel est le problème?
merci d'avance