我设法用事件创建一个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)