MFC 应用程序中的 C# 控件

Posted

技术标签:

【中文标题】MFC 应用程序中的 C# 控件【英文标题】:C# controls in a MFC Application 【发布时间】:2008-10-10 10:59:44 【问题描述】:

我负责使用 MFC 和一些第三方控件完全用 Visual C++ 编写的应用程序的用户界面。我想使用 C#(WinForms 甚至更好的 WPF)来改善应用程序的外观和感觉。

我想要一些关于如何做的建议。链接、文章、示例...

现在用户界面被隔离在一个项目中,我不想用 CLR 编译整个模块。那么我该如何从架构的角度来管理呢?

我已经在 Internet 上查找了该主题并阅读了 MSDN 信息。我想要更详细的信息...方便吗?优点缺点?您是否在“大型”应用程序中成功使用了这种方法? 我不想用 CLR 编译整个 ui 项目...我可以将所有 .NET 代码放在一个独立的项目中并从 ui 项目中调用它吗?最好的方法是什么?

提前致谢。

【问题讨论】:

您是否知道许多您可能期望的视觉样式在 .NET 中不可用?您不能期望您的程序看起来像 MS Office 2003 甚至 2007 应用程序一样开箱即用。您仍然需要 WinForms 的插件软件来实现这一点,因为它不是标准 .NET 包的一部分。 【参考方案1】:

一个很好的起点是 MSDN 上的 Win32 and WPF interop 页面。

【讨论】:

【参考方案2】:

我发现thiscodeproject 的文章很好地介绍了混合mfc/winforms代码的主题。

【讨论】:

【参考方案3】:

当遇到同样的问题时,我用 C# 制作了一个 ActiveX 控件并在我的 MFC 应用程序中使用它。 MS 的人员支持使用 .NET 构建 ActiveX 控件,但仍然可以使用具有自定义 [ComRegisterFunction()][ComUnregisterFunction] 的普通 Jane COM 类来实现。

虽然 MS 想告诉我们 /clr 标志将解决我们的问题,但它明显减慢了我的大型 MFC 应用程序。

【讨论】:

以上是关于MFC 应用程序中的 C# 控件的主要内容,如果未能解决你的问题,请参考以下文章

来自 MFC 对话框中使用的托管 C# 用户控件的未处理异常

MFC程序的Datagridview控件如何绑定MySql数据库中的数据进行显示啊?语言是C++。

您将使用哪种 C# 项目类型来重新开发 MFC C++ activex 控件?

用c#写一个com控件并在MFC中使用

使用 C++/MFC 和 C# 中的插件扩展 C++/MFC 应用程序

捕获托管在 mfc 对话框上的 windows 窗体事件(c#)