用c#写一个com控件并在MFC中使用
Posted
技术标签:
【中文标题】用c#写一个com控件并在MFC中使用【英文标题】:write a com control in c# and use it in MFC 【发布时间】:2010-11-28 07:15:01 【问题描述】:如果可以在 C# 中编写一个 com 控件或 activex 并在 MFC 中使用它?
【问题讨论】:
【参考方案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。
【讨论】:
以上是关于用c#写一个com控件并在MFC中使用的主要内容,如果未能解决你的问题,请参考以下文章