小编Gee*_*ndy的帖子

在C++中处理C#COM事件

我设法用事件创建一个C#COM对象.请在下面找到代码,

    [Guid("1212674-38748-45434")]
    public interface ICalculator
    {
        int Add(int Num1, int Num2);
    }

    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    [Guid("3453674234-84444-84784")]
    public interface ICalculatorEvents
    {
        [DispId(1)]
        void Completed(int Result);
    }

    [ClassInterface(ClassInterfaceType.None)]
    [ComSourceInterfaces(typeof(ICalculatorEvents))]
    [Guid("87457845-945u48-4954")]
    public class Calculator : ICalculator
    {
        public delegate void CompletedDelegate(int result);
        public event CompletedDelegate Completed;
        public Add(int Num1, int Num2)
        {
            int Result = Num1 + Num2;
            if(Completed != null)
                Completed(Result);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我已在C++控制台应用程序中导入此COM对象,并能够调用'Add()'方法.我不知道如何在我的C++应用程序中处理'Completed'事件.你能就此提出建议吗?我希望在发生此事件时在控制台中显示结果值.

请在下面找到C++应用程序的代码.事件'已完成'永远不会在此处理.这进入了一个无限循环.

    #import "Calculator.tlb"
    using namespace Calculator;
    int Flag = 0;
    class HandleEvent : public ICalculatorEvent
    {
        public:
            HandleEvent(void);
            ~HandleEvent(void);
            HRESULT …
Run Code Online (Sandbox Code Playgroud)

c# c++ com

5
推荐指数
1
解决办法
3001
查看次数

标签 统计

c# ×1

c++ ×1

com ×1