написать ком управления в C # и использовать его в MFC - PullRequest
0 голосов
/ 15 сентября 2009

если это возможно, чтобы написать элемент управления com или activex в C # и использовать его в MFC?

Ответы [ 2 ]

3 голосов
/ 15 сентября 2009

Да. Во-первых, вам нужно создать COM-объект. Ниже приведен очень простой пример.

[Guid("123565C4-C5FA-4512-A560-1D47F9FDFA20")]
public interface IDoSomething
{
    [DispId(1)]
    string Name { get; }

    [DispId(2)]
    int DoSomething();
}

[ComVisible(true)]
[Guid("12AC8095-BD27-4de8-A30B-991940666927")]
[ClassInterface(ClassInterfaceType.None)]
public sealed class DoSomething: IDoSomething
{
    public DoSomething()
    {
    }

    public string Name
    {
        get { return ""; }
    }

    public int DoSomething()
    {
        return 4; //random number
    }
}

После этого вам необходимо восстановить сборку. Инструмент regasm добавит необходимые записи реестра COM:

regasm.exe /tlb component.dll

/ tlb необходим для создания библиотеки типов для импорта в приложение MFC.

Как только ваша сборка зарегистрирована, вы можете вызывать DoSomething в своем приложении MFC, как и любые другие объекты COM.

Проверьте эту ссылку для получения дополнительной информации.

0 голосов
/ 15 сентября 2009

Это немного за пределами моей обычной территории, так как я не очень много взаимодействую с технологией .NET Interop.

Можно создать так называемый COM Callable Wrapper для вашего элемента управления / класса C #сделать его доступным для любой программы, поддерживающей COM.Я не буду дублировать ответ Фрэнсиса Б., потому что он достаточно полный.

Большой вопрос в том, работает ли визуальный элемент управления C # в окне MFC.На это я не могу ответить, но мой лучший совет - подготовиться к ухабистой дороге.Пожалуйста, смотрите http://bytes.com/topic/net/answers/430618-c-control-mfc-window-frame для более подробной информации.

...