【发布时间】:2011-04-07 10:42:20
【问题描述】:
我想知道如何将现有的 c# winforms 应用程序转换为类库,然后从 mfc 应用程序中调用它。有没有关于如何做到这一点的参考资料?我试过用谷歌搜索,但除了需要将ComVisible 属性设置为true 之外,我还没有找到太多信息。
谢谢。
【问题讨论】:
我想知道如何将现有的 c# winforms 应用程序转换为类库,然后从 mfc 应用程序中调用它。有没有关于如何做到这一点的参考资料?我试过用谷歌搜索,但除了需要将ComVisible 属性设置为true 之外,我还没有找到太多信息。
谢谢。
【问题讨论】:
查看 .NET 附带的 regasm.exe 工具。它将生成必要的注册表项(以及可选的 .tlb 文件),允许 COM 组件访问您的程序集。
【讨论】:
在 Visual Studio 项目属性中将输出类型更改为类库。这将使您的项目编译成 dll。另外将comvisible 属性设置为true。因此将生成一个可调用的 com 包装器和一个 tlb 文件,您可以从您的 mfc 项目中使用它们。
另外我认为下面的链接是对 COM 互操作如何在 .Net 中工作的非常好的和详细的解释
【讨论】:
一旦您正确构建了此版本,您就需要让它正常运行。主要问题可能是从非托管窗口正确地为窗口窗体提供父级,基本上让您的托管窗体存在于作为非托管应用程序开始的内容中。如果您不使用 WPF 作为非托管代码和托管表单之间的 UI 桥梁,那么您需要自己完成这项工作。您可以在 Google 上搜索此主题以获取更多信息,目前没有此主题的链接。
【讨论】:
an MSDN sample 涵盖了将 Winforms 用户控件放在 MFC 应用程序 - 对话框或视图上。除了代码之外,它还应该向您显示您需要的项目设置。
【讨论】: