Я создаю элемент управления ActiveX, который будет использоваться на веб-страницах для запроса текущей установленной версии стороннего программного обеспечения на клиентском компьютере. Элемент управления должен предоставить только один метод - GetVersion - который возвращает версию в виде целого числа. Я очень неопытен с ActiveX, и у меня есть проблемы с чем-то таким простым, как правильное возвращение значений из методов. Если я использую следующую декларацию в IDL:
[id(1)] void GetVersion();
В паре со следующей реализацией:
BEGIN_DISPATCH_MAP(CDetectorCtrl, COleControl)
DISP_FUNCTION_ID(CDetectorCtrl, "GetVersion", 1, GetVersion, VT_EMPTY, VTS_NONE)
END_DISPATCH_MAP()
void CDetectorCtrl::GetVersion()
{
MessageBox(L"Test");
}
Я могу вызвать метод из HTML и увидеть мой MessageBox просто отлично.
Но если я изменю определение / код на:
[id(1)] int GetVersion();
и
BEGIN_DISPATCH_MAP(CDetectorCtrl, COleControl)
DISP_FUNCTION_ID(CDetectorCtrl, "GetVersion", 1, GetVersion, VT_INT, VTS_NONE)
END_DISPATCH_MAP()
int CDetectorCtrl::GetVersion()
{
MessageBox(L"Test");
return 1337;
}
Я получаю сбой при вызове метода из HTML.