Пишу на С# dll:
using System;
using System.Reflection;
namespace Library
{
public delegate void MyEventHandler();
public interface ITest
{
event MyEventHandler Click;
int X();
}
public class TestComponent : ITest
{
public event MyEventHandler Click;
public int X()
{
if (Click != null)
Click();
return 100;
}
}
}
Делаю из всего этого COM-объект. И потом пытаюсь его использовать в С++:
#include <windows.h>
#include <iostream>
#include <comdef.h>
#import "Library.tlb" raw_interfaces_only
using namespace Library;
int main()
{
if (FAILED(CoInitialize(NULL))) return 0;
_bstr_t bstrCLSID = "Library.TestComponent";
CLSID clsidTest;
ITest* pITest;
if (FAILED(CLSIDFromProgID (bstrCLSID,&clsidTest))) return 0;
if (FAILED(CoCreateInstance(clsidTest, 0, CLSCTX_ALL, __uuidof(ITest), (void**)&pITest))) return 0;
pITest->add_Click(...);
long i;
pITest->X(&i);
pITest->remove_Click(...);
std::cout << i << std::endl;
pITest->Release();
CoUninitialize();
return 0;
}
Так вот вопрос: что нужно передавать в функциях add_Click(...) и remove_Click(...)?