Tôi đã theo 'hướng dẫn' về cách hiển thị khuôn khổ .NET thông qua COM (http://msdn.microsoft.com/en-us/library/zsfww439.aspx và http://msdn.microsoft.com/en-us/library/bd9cdfyx.aspx). Mọi thứ đều hoạt động ngoại trừ phần sự kiện. Khi tôi thêm sự kiện vào giao diện C# cáC++ mã C sau đây được tạo:Đăng ký các trình xử lý cho sự kiện .NET COM trong C++
struct __declspec(uuid("..."))
_MessageEventHandler : IDispatch
{};
struct __declspec(uuid("..."))
IConnection : IDispatch
{
virtual HRESULT __stdcall add_MessageEvent (
/*[in]*/ struct _MessageEventHandler * value) = 0;
virtual HRESULT __stdcall remove_MessageEvent (
/*[in]*/ struct _MessageEventHandler * value) = 0;
}
Vấn đề là tôi đã không tìm thấy bất kỳ thông tin về cách sử dụng điều này trong C++. Tôi có cần xuất phát từ _MessageEventHandler
và triển khai operator()
không? Hoặc cái gì khác hoàn toàn?
(Lưu ý rằng đối với thời điểm tôi cũng đang cố gắng tiếp cận tờ chi hơn của việc sử dụng IConnectionPointContainer và IConnectionPoint.)
Bạn có thể dự kiến sẽ xuất phát từ '_MessageEventHandler' và nhận cuộc gọi trên' IDispatch :: Invoke() 'cho sự kiện - nhưng câu hỏi là với những gì' DISPID'? –