【问题标题】:How to get a LPDISPATCH pointer/interface and pass it to an activeX Control如何获取 LPDISPATCH 指针/接口并将其传递给 activeX 控件
【发布时间】:2016-11-12 22:05:18
【问题描述】:

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

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

但是 activeX 需要我的应用程序向它传递一个 LPDISPATCH 指针/接口。

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

这是activeX提供的方法:

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

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

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

请帮帮我,谢谢!

【问题讨论】:

  • 嗯,你有很多工作要做。您的 CMyDlg 类必须实现 IDispatch。而且您必须重写该函数,ActiveX 控件无法将 CString 传递给您。字符串的自动化类型是 BSTR。
  • 谢谢,我知道这是个问题,但是实现 IDispatch 更好,你能给我看一个示例代码还是只是一个 iDispatch 类.thx。

标签: c++ callback mfc activex idispatch


【解决方案1】:

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

【讨论】:

  • 你有示例源代码吗?因为在我的应用程序中,将创建多达16个activeX控件,我必须单独处理它
猜你喜欢
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多