Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Ilya81
147 / 147 / 10
Регистрация: 19.10.2009
Сообщений: 319
#1

Указать callback для COM+, написанного в .Net - C++

01.04.2011, 10:51. Просмотров 522. Ответов 0
Метки нет (Все метки)

Нужно реализовать на C++ DLL с необъектным интерфейсом, взаимодействующую с .Net. Я решил использовать COM+ и многое работает, но никак не могу сделать подписку на событие .Net и не могу найти ни одного подходящего примера. Сам процедурный тип callback'а в .tlb-файле превращается в такое
Код
    [
      uuid(46BB0CBD-BBD0-3AD3-BD73-74AAB87056C7),
      version(1.0),
      noncreatable,
      custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "RemotingModule.DataChangedEventHandler")
    ]
    coclass DataChangedEventHandler {
        [default] interface _DataChangedEventHandler;
        interface _Delegate;
        interface _Object;
        interface ICloneable;
        interface ISerializable;
    };

    [
      odl,
      uuid(2D83F9B4-CDCF-31ED-A403-5211C2500576),
      hidden,
      dual,
      oleautomation,
      custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "RemotingModule.DataChangedEventHandler")    

    ]
    interface _DataChangedEventHandler : IDispatch {
    };

    [
      odl,
      uuid(7A9A9F54-4C7F-33B3-B19A-9D590A415137),
      version(1.0),
      dual,
      oleautomation,
      custom(0F21F359-AB84-41E8-9A78-36D110E6D2F9, "COMInteraction.ICOMServer")    

    ]
    interface ICOMServer : IDispatch {
        [id(0x60020000)]
        HRESULT Transfer([in] BSTR str);
        [id(0x60020001)]
        HRESULT Receive([out, retval] BSTR* pRetVal);
        [id(0x60020002)]
        HRESULT add_DataChanged([in] _DataChangedEventHandler* value);
        [id(0x60020003)]
        HRESULT remove_DataChanged([in] _DataChangedEventHandler* value);
    };
И вот как создать в C++ процедурный тип для этого _DataChangedEventHandler, не могу нигде найти примеров. Всё что удалось найти
C++
1
2
3
4
5
    IID iddCallback;
    _DataChangedEventHandler* pCallback;
    bstrCLSID = "{2D83F9B4-CDCF-31ED-A403-5211C2500576}";//uuid
    if (FAILED(IIDFromString  (bstrCLSID,&iddCallback)))
        return 1;
Но что дальше делат с этим iddCallback и как его превратить в pCallback, при этом указав
C++
1
2
3
void __stdcall OnDataChanged(){
//some handling
}
так, чтоб он вызывался, никак не могу разобраться, все примеры останавливаются на этом IDD. Подскажите, пожалуйста, как передать процедурный тип этому методу с таким описанием в .tlh.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2011, 10:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указать callback для COM+, написанного в .Net (C++):

For_each и аргументы callback-функции; Как передать callback'у больше одного аргумента - C++
Изучаю контейнеры и алгоритмы stl по Майерсу . С непривычки слегка охренел и запутался в них . В общем есть у меня простой вызов...

Господа, подскажите исходники компилятора для С++ написанного на С++ - C++
Господа, подскажите исходники компилятора для С++ написанного на С++. Главное чтобы была корректная поддержка WinAPI и OpenGL ...

callback функции не для кнопок на экране, а для клавиш на клав. и мышке. Как? - C++
Я так понимаю, что в WIN API все действия делаются асинхронно через callback функции. Но как инициировать действие для клавиш клавиатуры...

Для чего нужны callback-функции - C++
Для чего нужны callback-функции? И можно привести какой-нибуль пример по их использованию.

Шаблоны и функторы как callback для класса свойства объекта. Код работает - но не должен - C++
Здравствуйте! Хочу написать реализацию класса свойства на шаблоне. Т.е есть объект, он инициирует необходимые проперти, в графическом...

Получение с помощью .NET Project.Title из exe, написанного на C++ Builder - C#
Добрый день всем. Это мое первое сообщение на данном форуме. Надеюсь вы мне поможете. Проблема вот в чем. Есть написанные в С++ BUILDER...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2011, 10:51
Привет! Вот еще темы с ответами:

Как указать VS.NET какой из установленный .NET Framewrok SDK использовать - .NET
У меня есть дистрибутив VS.NET2002. При инсталляции он ставит .NET Framewrok SDK v1.0.3705 Я скачал .NET Framewrok SDK v1.1.4322....

Отправка написанного кода в компилятор для C++ - C#
Так вот Есть кнопка и richTextBox1. как сделать чтоб при нажатии на кнопку текст из richTextBox1 переносился в компилятор g++ и показывал...

.NET 4.x необходимые библиотеки для запуска написанного приложения - C#
собственно что нужно для запуска приложений написанных и скомпилированных ? net framework там что еще ? какие-то конкретные версии ? или...

Метрики Холстеда и Спена для кода, написанного на Ruby - C#
Добрый день, мне необходимо разработать ПС подсчета метрик спена и холстеда для кода, написанного на Ruby. Подсчет спена ведется ведется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru