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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Условный оператор. http://www.cyberforum.ru/cpp-beginners/thread268203.html
Написала код программы выдаёт ошибки. :( Вычислить значение функции -ax в квадрате -b при x<5 x+a/x при x>5 -x/c в остальных случаях #include<conio.h> #include<stdio.h> #include<math.h>
C++ Массивы и матрица 1.Составить алгоритм, который вычисляет и вводит на печать сумму квадратов чётных чисел от 2 до 20. 2.В одномерном массиве, состоящем из n вещественных элементов, вычислить количество элементов массива меньших C. 3.Найти сумму положительных элементов и количество отрицательных элементов матрицы A(5,7) http://www.cyberforum.ru/cpp-beginners/thread268199.html
C++ про коробочку, С++
На входе подается количество коробочек, а также размеры коробочек, определить максимальное количество коробочек которые можна вложить друг в друга Помогите с решением!
Заставка в С++ C++
Помогите создать цветную заставку, на тему Бегущий человечек, скорость которого периодически меняется.
C++ Cортировка динамической матрицы http://www.cyberforum.ru/cpp-beginners/thread268178.html
Отсортировать каждую строку динамической матрицы по возрастанию и вывести новую матрицу с упорядоченными строками Помогите...не выходит(((((((
C++ Задание на С++ Спроектировать интерфейс приложения. Реализовать приложение. В приложении осуществить: связь с таблицей, создание отчета, файл справки. ПРОГРАММА НА С++, ИСПОЛЬЗУЕТСЯ MFC Разработка информационной системы Каталог видеофильмов Кто сможет помогите. Могу заплатить за хорошоую работу. подробнее

Показать сообщение отдельно
Ilya81
146 / 146 / 10
Регистрация: 19.10.2009
Сообщений: 319
01.04.2011, 10:51     Указать callback для COM+, написанного в .Net
Нужно реализовать на 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.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru