Подключение к событиям из неуправляемого кода.
От: Аноним  
Дата: 06.08.13 08:01
Оценка:
В неуправляемом коде
IConnectionPointContainer::FindConnectionPoint возвращает 0x80020400
Подскажите, пожалуйста, что я не так сделал.


Код на с#
namespace FormWithEvents
{
    public delegate void Method1();
    public delegate void Method2();

    [ComVisible(true)]
    [Guid("21A22A50-E1D6-4e5f-A617-5A9C5AEE4B71")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    public interface IFormWithEvents
    {
        void ShowForm();
    }

    [ComVisible(true)]
    [Guid("200B4AC8-06B7-4c4f-B3A9-7EF491FFED6E")]
    [InterfaceType(1)]
    //    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface ITestEvents
    {
        void Method1();
        void Method2();
    }
    [ComVisible(true)]
    [Guid("DD4BF8FB-98CF-40ad-9F5F-51D31725CF03")]
    [ComSourceInterfaces(typeof(ITestEvents))]
    [ClassInterface(ClassInterfaceType.None)]
    public class Class1 : IFormWithEvents
    {
        private event Method1 hMethod1;
        private event Method2 hMethod2;
        private Form1 m_form;
        [ComVisible(true)]
        public void ShowForm()
        {
            m_form = new Form1();
            m_form.m_class = this;
            m_form.ShowDialog();
        }
        [ComVisible(false)]
        public void EventFireClick() // Вызывается из формы
        {
            if (hMethod1 != null)
            {
                hMethod1();
            }
        }
        public void EventFireClick2() // Вызывается из формы
        {
            if (hMethod2 != null)
            {
                hMethod2();
            }
        }
    }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.