c++ - COM 事件通知

标签 c++ com

没有:

  • ATL
  • MFC

注意:

  • 客户端在与服务器不同的线程中执行

问题:

  • 一旦从 COM 对象收到事件通知,我如何控制客户端的行为>(服务器)?
  • 如何从客户端实现事件接口(interface)?

下图:

hresult = pis8->QueryInterface(
                __uuidof(IConnectionPointContainer),
            (void **) &pContainer);

//result handling omitted


hresult = pContainer->FindConnectionPoint(
                      __uuidof(IS8SimulationEvents),
                      &pConnection);

//result handling omitted

最佳答案

客户端实现事件接口(interface) (IS8SimulationEvents) 这可以在单独的组件中,也可以在客户端组件本身上。当组件触发事件时调用实现。

FindConnectionPoint 之后,客户端调用pConnection->Advise,传递IS8SimulationEvents 并接收“cookie”。 cookie 需要调用 Unadvise,它必须在清理期间调用以断开连接。

如果客户端运行在与服务器不同的线程中,则客户端需要运行消息循环来接收调用。

关于c++ - COM 事件通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/454316/

相关文章:

c++ - 编写一个函数来删除单向链表中的节点(尾部除外),只允许访问该节点

c++ - QT Start explorer进程参数

c++ - 抽象类类型 'A' 的无效 new 表达式

.net - 使用 ClassInterfaceType.AutoDual 真的是个坏主意,即使使用 VB6?

c++ - 在 enable_if_t 中调用 constexpr 函数

c++ - 非静态成员函数的 decltype 格式不正确吗?

c++ - 选择com的理由

c# - 将字符串数组从 C# 传递到 C++ Com

c++ - Shell 扩展 : Static-Linking vs. C/C++ 运行时 DLL 的动态链接

c++ - 如果我在 IMFTransform 上有指针,如何获取 GUID 编码器?