Доброе время суток.
Необходимость заставила начать изучение .Net и создать сабж.
Помидорами прошу не закидывать.
Поиск информации меня разочаровал, либо не там искал, либо так оно и есть,
нашел только статью "Использование .NET компонентов при помощи COM" http://www.rsdn.ru/article/default.asp?dotnet/net2com.xml
Там на простом примере показано как создать сабж, после этого у меня
возникли вопросы:
1) Как можно самому задать uuid для интерфейса и для класса ? (Я так понял
что ни как)
2) Или я плохо смотрел в студии или действительно написание COM объектов все
надо руками делать, т.е нет визардов ?
3) Есть ли ссылки на пример как можно создать ActiveX Control в Managed С++ ?
Спасибо за любой ответ, но отдельно спасибо за ответ по существу.
Спасибо Акжан, действительно плохо смотрел, правда для MC++ пришлось написать
using System::Runtime::InteropServices; Но главное в том это скомпилилось !
Не моглибы вы посоветовать, ссылки на создание ActiveX Control в MC++? (хотябы простую кнопку)
Здравствуйте, Аноним, Вы писали:
А>Спасибо Акжан, действительно плохо смотрел, правда для 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 там создавать несколько более адекватно задаче.
Здравствуйте, <Аноним>, Вы писали:
А>1) Как можно самому задать uuid для интерфейса и для класса ? (Я так понял А>что ни как) А>2) Или я плохо смотрел в студии или действительно написание COM объектов все А>надо руками делать, т.е нет визардов ?
описано как задавть гуиды и прочее. Там говорится о 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 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
А>>Не моглибы вы посоветовать, ссылки на создание ActiveX Control в MC++? (хотябы простую кнопку)
AVK>Странное желание. Зачем тогда МС++?
Я бы сказал — обычное.
Часто нужно написать новый ActiveX в старое приложение. Писать сложный ActiveX (да даже и простой) на Atl/MFC, после привыкания к .Net-у, ОЧЕНЬ не хочется.
На шарпе начинаются проблемы с legacy-интерфейсами (чего стоит реализация, хоть какого-нибудь IEnumXXX)
Остается либо только MC++, либо связка C#(сам контрол) + MC++(обертка над legacy-код)
Просмотрел кучу веток на тему создания полнофункционального ActiveX средствами .Net и даже попробовал вариант с аггрегированием .Net контрола в COM (ATL) контрол. Однако ничего путного не вышло. Так при тестировании в tstcon32 в отладочную подсистему (OutputDebugString()) кидается сообщение о невозможности аггрегирования .Net контрола из-за отсутсвия поддержки каких-то расширенных функций.
А к сожалению надобность реализации такого контрола критическая (по ряду причин). Неужели никому до сих пор не понадобилось и не удалось решить подобную проблему. Неужели нет героя способного победить гидру по кличке Микрософт.
Если кто-нибудь обладает реальной информацией по данной проблему, буду безмерно благодарен ибо время поджимает а приемлемого решения все нет .
Заранее спасибо .
Здравствуйте, KlimHawk, Вы писали:
KH>Просмотрел кучу веток на тему создания полнофункционального ActiveX средствами .Net и даже попробовал вариант с аггрегированием .Net контрола в COM (ATL) контрол. Однако ничего путного не вышло. Так при тестировании в tstcon32 в отладочную подсистему (OutputDebugString()) кидается сообщение о невозможности аггрегирования .Net контрола из-за отсутсвия поддержки каких-то расширенных функций.
Говорят в 1.1 какую то поддержку добавили (По моему в хост MFC 7.1 добавили поддержку нетовских контролов). Попробуй.