gpt4 book ai didi

delphi - 接收 COM 事件,无需手动将 dispid 映射到方法

转载 作者:行者123 更新时间:2023-12-03 15:58:40 25 4
gpt4 key购买 nike

我有一个 IConnectionPointContainer 并且知道我想要接收其事件的连接点。现在我需要编写一个包含这些事件的回调方法的类。

所以基本上我正在这样做:

OleCheck((ExtIntf as IConnectionPointContainer).FindConnectionPoint(IID_IEvents, cp));
OleCheck(cp.Advise(MySink {<--this one I need}, Cookie));

我需要提供 MySink 并且我知道如何做到这一点,以便调用 MyIntf.Invoke。但我不想手动将 dispid 映射到事件方法。

这意味着我不想在我的 Invoke 中执行此操作:

// Handle the event
case DispID of
102 : OnStatusTextChange(pdpParams^.rgvarg^[lpDispIds[0]].bstrval);
104 : OnDownloadComplete;
105 : OnCommandStateChange(pdpParams^.rgvarg^[lpDispIds[0]].lval,
pdpParams^.rgvarg^[lpDispIds[1]].vbool);
106 : OnDownloadBegin;
108 : OnProgressChange(pdpParams^.rgvarg^[lpDispIds[0]].lval,
pdpParams^.rgvarg^[lpDispIds[1]].lval);
112 : OnPropertyChange(pdpParams^.rgvarg^[lpDispIds[0]].bstrval);
{... doh}

对于连接点IID_IEvents,我有接口(interface)IEvents 和dispinterface 声明(从Delphi 类型库导入)。我不能以某种方式实现 IEvents 吗?我想要一个干净的类,其中包含方法,每个方法都是 IID_IEvents 连接点提供的事件之一的回调。

我非常希望有人知道

  • 我可以继承的基类负责调用我的事件方法
  • 一个为我创建合适的类的 Delphi 向导
  • 这棵树是我最终掌握 COM 的魔杖

有什么建议吗?

最佳答案

TechVanguards 有一个可以为您生成代码的工具:COM Sink Event Generator .

您可以also see my question ;我提示必须写下你所面临的写作。

关于delphi - 接收 COM 事件,无需手动将 dispid 映射到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6999711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com