Запуск пользовательского события в элементе управления ActiveX приводит к сбою IE

В свой элемент управления ActiveX с помощью мастера классов я добавил пользовательское событие с именем OutboundCallStateChanged, В моем классе OLEControl сгенерировано следующее:

.ч файл

    class CIVR60Ctrl : public COleControl
{
...
public:

// Event maps
//{{AFX_EVENT(CIVR60Ctrl)
void FireOutboundCallStateChanged()
{FireEvent(eventidOutboundCallStateChanged,EVENT_PARAM(VTS_NONE));}
//}}AFX_EVENT
DECLARE_EVENT_MAP()
...
}

// Dispatch and event IDs
public:
CMainDialog m_MainDialog;
enum {
//{{AFX_DISP_ID(CIVR60Ctrl)
dispidToolTipText = 1L,
dispidDial = 4L,
dispidGetOutboundCallState = 6L,
...
dispidGetUserStatus = 13L,
eventidOutboundCallStateChanged = 1L,
//}}AFX_DISP_ID
};
};

В файле .cpp:

// Event map

BEGIN_EVENT_MAP(CIVR60Ctrl, COleControl)
//{{AFX_EVENT_MAP(CIVR60Ctrl)
EVENT_CUSTOM("OutboundCallStateChanged", FireOutboundCallStateChanged, VTS_NONE)
//}}AFX_EVENT_MAP
END_EVENT_MAP()

Хорошо, очень мило Теперь, когда я пытаюсь использовать эту функцию из другого класса (который я считаю COM-объектом), вот так:

pMainClass->p_IVRCtrl->FireOutboundCallStateChanged();

IE8 просто вылетает и говорит мне, что восстановил вкладку. Когда я запускаю его внутри класса IVR60Ctrl, хотя; Я думаю, что это работает.

В первом случае я думаю, что вызов вызывает исключение. Я не знаю что это за; Я только мог поймать это с catch(...), Может кто-нибудь сказать мне, почему это может не работать; и какой тип исключения это выбрасывает, чтобы я мог его поймать?

РЕДАКТИРОВАТЬ: Мне удалось избежать исключения, позвонив FireOutboundCallStateChanged() из новой темы. Теперь он не падает, но я не уверен, действительно ли событие вызывается в IE, когда я его запускаю. Как я могу проверить, прибывает ли событие IE?

Теперь в файле .html я пытаюсь сделать следующее:

        <OBJECT name="ivr" ID="IVR601" WIDTH=973 HEIGHT=52 align="top"CODEBASE="IVR60.ocx"CLASSID="CLSID:01B5BC0F-A51D-4C47-B3E9-3DA1099750CE"style="position:absolute; top:2px; left:10px;">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="23865">
<PARAM NAME="_ExtentY" VALUE="2164">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
<script type="text/javascript">
var ocx = IVR601;

function ivr::OutboundCallStateChanged(){
alert("fired");
}
</script>

Но когда я звоню FireOutboundCallStateChanged() из объекта ActiveX я не получаю предупреждение, поэтому я не знаю, могу ли я поймать событие или оно вообще не вызывается.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …