Функция отправки в VC ++ ActiveX с MFC

Я пытаюсь сделать COM \ ActiveX в C ++ с Visual Studio. Я хочу написать функцию в ActiveX, которую можно вызывать из другой программы. Я следую за этим документом: https://docs.microsoft.com/en-us/cpp/mfc/mfc-activex-controls-adding-custom-methods?view=vs-2017 .

Но когда я пытаюсь вызвать мою функцию в другой программе, у меня возникает ошибка с падением …
Вот моя ошибка:

две куклы

В моем MFCActiveGUICtrl.cpp:

BEGIN_DISPATCH_MAP(CMFCActiveXGUICtrl, COleControl)
DISP_FUNCTION_ID(CMFCActiveXGUICtrl, "test", dispidSetNeutralMode, test, VT_BOOL, VTS_I4)
END_DISPATCH_MAP()

....

BOOL CMFCActiveXGUICtrl::test(LONG arg1) {
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString str1;
str1.Format(_T("arg: %ld"), arg1);
MessageBox(str1, (LPCWSTR)L"testssss", MB_OK);
return 0;
}

В моем MFCActiveXGUI.h:

// Substitutions
public:
enum {
dispidSetNeutralMode = 6L,
dispidCustomizeBusbar = 5L,
dispidCustomizeBreaker = 4L,
dispidChangeEquipmentAtLoc = 3L,
eventidDblClick = 2L,
eventidMouseUp = 1L,
};

protected:
~CMFCActiveXGUICtrl();
BOOL test(LONG arg1);
....

В моем MFCActiveXGUI.idl:

[ uuid(fb5b5028-5476-42c5-974c-073318a05b99), version(1.0), control ]
library MFCActiveXGUILib
{
importlib(STDOLE_TLB);

[
uuid(982cb36d-92c8-4e12-afdc-a37df0aa7892)
]
dispinterface _DMFCActiveXGUI
{
properties:
methods:
[id(6), helpstring("method test")] BOOL test(LONG arg1);
};
...

Затем в своем тестовом приложении я использую «InvokeHelper» для вызова моей «тестовой» функции в моем activeX. Мое тестовое приложение — это приложение MFC, в которое я включаю свой ActiveX.

В моем TestAppDlg.cpp:

BOOL CTestAppDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_bIsBreakerPir = ! m_bIsBreakerPir;
m_ctrlInst.InvokeHelper(0x06, DISPATCH_METHOD, VT_BOOL, NULL, (BYTE*)VTS_I4, 5);

SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);
....

У вас есть идея моей проблемы?
Спасибо за помощь 😉


РЕДАКТИРОВАТЬ:

Когда я нажимаю «Повторить» в диалоговом окне, программа останавливается здесь:
введите описание изображения здесь

Вот стек вызовов:
введите описание изображения здесь

0

Решение

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

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

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

По вопросам рекламы ammmcru@yandex.ru