Actually I want to implement COM sink in C++ for C# server.
I am trying to implement event sink in C++ client, but it gives me member
not found error when call comes back from C# event raised.
Here are both C# source(taken from MSDN article: "Raising Events Handled by
a COM Sink") and C++ sink:
"VB client for the same C# source it is working fine"
//********** C# source ***************
using System;
using System.Runtime.InteropServices;
namespace EventSource
{
public delegate void ClickDelegate(int x, int y);
public delegate void ResizeDelegate();
public delegate void PulseDelegate();
// Step 1: Defines an event sink interface (ButtonEvents) to be
// implemented by the COM sink.
[GuidAttribute("1A585C4D-3371-48dc-AF8A-AFFECC1B0967") ]
[InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIDispatch)]
public interface ButtonEvents
{
void Click(int x, int y);
void Resize();
void Pulse();
}
// Step 2: Connects the event sink interface to a class
// by passing the namespace and event sink interface
// ("EventSource.ButtonEvents, EventSrc").
[ComSourceInterfaces(GetType(ButtonEvents))]
public class Button
{
public event ClickDelegate Click;
public event ResizeDelegate Resize;
public event PulseDelegate Pulse;
public Button()
{
}
public void CauseClickEvent(int x, int y)
{
Click(x, y);
}
public void CauseResizeEvent()
{
Resize();
}
public void CausePulse()
{
Pulse();
}
}
}
following statement in the attached client gives error "Member not found",
don't know what is going wrong.
hr = pButton->CauseClickEvent(x,x);
Any idea?
Thanks,
Sandip