создание COM в Managed C++
От: Аноним  
Дата: 11.01.03 06:00
Оценка:
Доброе время суток.
Необходимость заставила начать изучение .Net и создать сабж.
Помидорами прошу не закидывать.
Поиск информации меня разочаровал, либо не там искал, либо так оно и есть,
нашел только статью "Использование .NET компонентов при помощи COM"
http://www.rsdn.ru/article/default.asp?dotnet/net2com.xml
Автор(ы): Алексей Дубовцев
Дата: 19.11.2001

Там на простом примере показано как создать сабж, после этого у меня
возникли вопросы:
1) Как можно самому задать uuid для интерфейса и для класса ? (Я так понял
что ни как)
2) Или я плохо смотрел в студии или действительно написание COM объектов все
надо руками делать, т.е нет визардов ?
3) Есть ли ссылки на пример как можно создать ActiveX Control в Managed С++ ?

Спасибо за любой ответ, но отдельно спасибо за ответ по существу.

Илья
Re: создание COM в Managed C++
От: Akzhan Россия http://www.akzhan.midi.ru/devcorner/
Дата: 11.01.03 06:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>1) Как можно самому задать uuid для интерфейса и для класса ? (Я так понял что ни как)


Плохо смотрел. Можно делать всё.
В частности, тут тебе поможет

using System.Runtime.InteropServices;

[GuidAttribute("GUIDDDDDD")]
public class MyClassForCOM
...
С уважением,
Акжан, http://www.akzhan.midi.ru/devcorner/ — мой уголок разработчика
Re[2]: создание COM в Managed C++
От: Аноним  
Дата: 11.01.03 07:18
Оценка:
Спасибо Акжан, действительно плохо смотрел, правда для MC++ пришлось написать
using System::Runtime::InteropServices; Но главное в том это скомпилилось !

Не моглибы вы посоветовать, ссылки на создание ActiveX Control в MC++? (хотябы простую кнопку)

Илья
Re[3]: создание COM в Managed C++
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 11.01.03 09:23
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Не моглибы вы посоветовать, ссылки на создание ActiveX Control в MC++? (хотябы простую кнопку)


Странное желание. Зачем тогда МС++?
... << RSDN@Home 1.0 beta 4 (np: тихо) >>
AVK Blog
Re[3]: создание COM в Managed C++
От: Akzhan Россия http://www.akzhan.midi.ru/devcorner/
Дата: 11.01.03 12:16
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Спасибо Акжан, действительно плохо смотрел, правда для MC++ пришлось написать

А>using System::Runtime::InteropServices; Но главное в том это скомпилилось !
А>Не моглибы вы посоветовать, ссылки на создание ActiveX Control в MC++? (хотябы простую кнопку)

Я не вижу никаой разницы между написанием такого орагана управления на C# или на MC++.
Хотя рекомендовал бы либо
1) перейти на C#, поскольку на MC++ неудобно писать, и прямой поддержки дизанерами Windows Forms сейчас нет (будет в VS.NET 1.1 Everett).
либо
2) перейти на чистый C++/ATL/WTL (скачать WTL 7.0 от Microsoft), поскольку ActiveX там создавать несколько более адекватно задаче.
С уважением,
Акжан, http://www.akzhan.midi.ru/devcorner/ — мой уголок разработчика
Re: создание COM в Managed C++
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.01.03 18:08
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>1) Как можно самому задать uuid для интерфейса и для класса ? (Я так понял

А>что ни как)
А>2) Или я плохо смотрел в студии или действительно написание COM объектов все
А>надо руками делать, т.е нет визардов ?

И не нужны. Там теперь все просто. Здесь
Автор: VladD2
Дата: 07.11.02
описано как задавть гуиды и прочее. Там говорится о COM+, но все тоже самое можно сказать и об обычных COM-объектах.

А>3) Есть ли ссылки на пример как можно создать ActiveX Control в Managed С++ ?


А вот с этим пробемы. Во-первых, МС++ плохое средство для написания кода для .NET. Он создан исключительно для совмещения мира .NET и Win32. Во-вторых, МС сделал все возможное чтобы на .NET нельзя было создавать ActiveX Control-ы. Еще в бэте 1 это было делать давольно легко, но потом они насильно перекрыли сериализацию в стрим. Но сделать ActiveX Control все же можно. Для этого нужно вручную добавить ключь Control в реестр и реализовать сериализацию в стрим.

Вот только делать это все не стоит. ActiveX Control-ы лучше создавть на обычном С++. А на нэте лучше делать контролы WinForms.
... << RSDN@Home 1.0 beta 4 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: создание COM в Managed C++
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 12.01.03 11:10
Оценка:
Здравствуйте, AndrewVK, Вы писали:

А>>Не моглибы вы посоветовать, ссылки на создание ActiveX Control в MC++? (хотябы простую кнопку)


AVK>Странное желание. Зачем тогда МС++?


Я бы сказал — обычное.

Часто нужно написать новый ActiveX в старое приложение. Писать сложный ActiveX (да даже и простой) на Atl/MFC, после привыкания к .Net-у, ОЧЕНЬ не хочется.

На шарпе начинаются проблемы с legacy-интерфейсами (чего стоит реализация, хоть какого-нибудь IEnumXXX)

Остается либо только MC++, либо связка C#(сам контрол) + MC++(обертка над legacy-код)
... << RSDN@Home 1.0 beta 3 >>
Re[5]: создание COM в Managed C++
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.01.03 20:25
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>Остается либо только MC++, либо связка C#(сам контрол) + MC++(обертка над legacy-код)


Ну, последнее более менее разумно. Хотя я бы выбрал VB6 + ATL (на всякий пожарный).
... << RSDN@Home 1.0 beta 4 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: создание COM в Managed C++
От: KlimHawk Россия  
Дата: 30.03.03 21:24
Оценка:
Просмотрел кучу веток на тему создания полнофункционального ActiveX средствами .Net и даже попробовал вариант с аггрегированием .Net контрола в COM (ATL) контрол. Однако ничего путного не вышло. Так при тестировании в tstcon32 в отладочную подсистему (OutputDebugString()) кидается сообщение о невозможности аггрегирования .Net контрола из-за отсутсвия поддержки каких-то расширенных функций.
А к сожалению надобность реализации такого контрола критическая (по ряду причин). Неужели никому до сих пор не понадобилось и не удалось решить подобную проблему. Неужели нет героя способного победить гидру по кличке Микрософт.
Если кто-нибудь обладает реальной информацией по данной проблему, буду безмерно благодарен ибо время поджимает а приемлемого решения все нет .
Заранее спасибо .
KlimHawk
Re[3]: создание COM в Managed C++
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 31.03.03 07:21
Оценка:
Здравствуйте, KlimHawk, Вы писали:

KH>Просмотрел кучу веток на тему создания полнофункционального ActiveX средствами .Net и даже попробовал вариант с аггрегированием .Net контрола в COM (ATL) контрол. Однако ничего путного не вышло. Так при тестировании в tstcon32 в отладочную подсистему (OutputDebugString()) кидается сообщение о невозможности аггрегирования .Net контрола из-за отсутсвия поддержки каких-то расширенных функций.


Говорят в 1.1 какую то поддержку добавили (По моему в хост MFC 7.1 добавили поддержку нетовских контролов). Попробуй.
... << RSDN@Home 1.0 beta 6a >>
AVK Blog
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.