c++ - 如何获取 LPDISPATCH 指针/接口(interface)并将其传递给 activeX 控件

标签 c++ callback mfc activex idispatch

我在 Windows 7 64 位的 Visual Studio 2015 中使用 MFC。

在我的应用程序中,有一个 activeX 控件,我需要在 activeX 控件和我的应用程序之间进行通信。

但是 activeX 需要我的应用程序将 LPDISPATCH 指针/接口(interface)传递给它。

我应该如何获取应用程序方法 (OnExtRequest) 的 LPDISPATCH 指针/接口(interface)?

这是activeX提供的方法:

void SetOnExtRequest(LPDISPATCH propVal)
{
    SetProperty(0x4, VT_DISPATCH, propVal);
}

这是我的应用程序的回调函数(将此函数的 LPDISPATCH 指针/接口(interface)传递给 activeX)

int CMyDlg::OnExtRequest(CString sObj, int uMeth, CString sData, int uHandle, CString sPeer)
{
    //TODO:......
}

请帮帮我,谢谢!

最佳答案

您的 OnExtRequest() 回调方法不是 ActiveX 对象的一部分,因此您不能将它直接传递给 SetOnExtRequest()。您需要编写一个实现 IDispatch 的类,并让它的 Invoke() 实现调用您的 OnExtRequest() 方法。然后创建该类的实例并将其传递给 SetOnExtRequest()

关于c++ - 如何获取 LPDISPATCH 指针/接口(interface)并将其传递给 activeX 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38298806/

相关文章:

c++ - 为什么我的 vector 迭代器没有显示 operator=?

javascript - 用户关闭页面时如何调用服务器方法

c++ - 按字符串长度对 CMap 键进行排序

c++ - 将 IOCP 与 send() 和 receive() 一起使用

c++ - 使用 C++ 代码的小型计算器

带有回调的 Javascript 函数,该回调将启动的对象作为参数传递

javascript - 如何设计具有多个回调的 Javascript 库 API?

delphi - C++ Builder vs Delphi vs MFC

c++ - 获取鼠标悬停时 ClistBox 项目的索引

c++ - C++ 中此语法 std::class<>{}(arg1, arg2) 的含义是什么?