【问题标题】:write a com control in c# and use it in MFC用c#写一个com控件并在MFC中使用
【发布时间】:2010-11-28 07:15:01
【问题描述】:

如果可以在 C# 中编写一个 com 控件或 activex 并在 MFC 中使用它?

【问题讨论】:

    标签: c# com mfc activex


    【解决方案1】:

    是的。首先,您需要创建 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 应用程序的类型库所必需的。

    一旦您的程序集被注册,您就可以像任何其他 COM 对象一样在您的 MFC 应用程序中调用 DoSomething。

    查看此link 了解更多信息。

    【讨论】:

      【解决方案2】:

      这有点超出我的正常范围,因为我与 .NET 互操作技术的交互并不多。

      可以围绕 C# 控件/类创建所谓的 COM 可调用包装器,以使其可供任何支持 COM 的程序访问。我不会重复 Francis B 的答案,因为它目前相当完整。

      最大的问题是可视化 C# 控件是否可以在 MFC 窗口中无缝工作。这不是我能回答的问题,但我最好的建议是为前方的崎岖道路做好准备。详情请见http://bytes.com/topic/net/answers/430618-c-control-mfc-window-frame

      【讨论】:

        猜你喜欢
        • 2012-03-05
        • 1970-01-01
        • 1970-01-01
        • 2017-05-05
        • 2020-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多