Ermitteln einer EventID einer ActiveX zur Laufzeit
-
Hallo!
Ich habe eine ActiveX, die zur Laufzeit eine Instance einer anderen ActiveX erzeugt und dann anhand des
Namens einer Methode mittels GetIDsOfNames(...) die jeweilige dispid (DispatchID) ermittelt.
Mit der dispid kann dann mit invokehelper(..) die Methode aufgerufen werden.
So weit so gut.
Nun möchte ich aber auch die eventid eines bestimmten Events (Name:CollectEvent) ermitteln und musste feststellen,
dass sich dies um einiges schwieriger gestaltet.
Kann mir jemand helfen die eventid zu ermitteln oder mir zu mindest einen Ansatz geben, wie ich die ID geliefert bekomm?
Danke schon einmal im Voraus.Hier der code , wie ich die dispid bekomm und die Methoden aufrufe:
.... CWnd m_ControlWrapper; RECT rct = {0,0,5,50}; BOOL bStat=FALSE; bStat= m_ControlWrapper.CreateControl(clsid, "Spectrometer", WS_CHILD, rct, this, 1212, NULL, FALSE, NULL); if (bStat == FALSE) { MessageBox ("Could not place control"); return; } // Use the IUnknown of the control. LPUNKNOWN pUnk = m_ControlWrapper.GetControlUnknown(); // From there get the IDispatch interface of control. LPDISPATCH pInterface = NULL; pUnk->QueryInterface(IID_IDispatch, (LPVOID*)&pInterface); CString CstrMethod = "STATUS"; BSTR BstrMethod = CstrMethod.AllocSysString(); DISPID dispid; // get the id of the method HRESULT hRet = pInterface->GetIDsOfNames(IID_NULL, &BstrMethod, 1, LOCALE_SYSTEM_DEFAULT, &dispid); // invoke the method m_ControlWrapper.InvokeHelper(dispid, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);//InvokeHelper(0xc, DISPATCH_METHOD , VT_EMPTY, NULL, NULL); ....