非托管代码中的 Windows 窗体?

Posted

技术标签:

【中文标题】非托管代码中的 Windows 窗体?【英文标题】:Windows Forms in Unmanaged Code? 【发布时间】:2009-04-11 08:32:31 【问题描述】:

我很生气,因为 Visual Studio 带有一个精美的 GUI 界面设计器,而且它只能被 .NET 应用程序访问,甚至不能被托管 C++ 访问。

是否有任何简单的方法至少可以使用非托管/外部代码打开 C DLL 类型的接口?

【问题讨论】:

至于烦恼 - 你知道,如果你不喜欢它,你不必使用设计师。 我更恼火的是他们有这么好的设计师我不能用。 可以...或者你在谈论 xaml 的东西(不是 windows 窗体) 【参考方案1】:

Windows 窗体在很大程度上是 .NET 框架的一部分,不能从非托管代码访问(至少在任何实际意义上都不能)。但是,可以从托管 C++ 调用它(我不知道 Visual Studio 本身的设计器支持,但托管 C++ 绝对可以使用 Windows 窗体库)。

您可能想了解其他 C++ GUI 选项,例如 Qt、wxWidgets 或 Gtkmm。

【讨论】:

【参考方案2】:

MFC 仍然是在 Visual C++ 2008 中开发 GUI 的可行选择。这里甚至是 how to integrate MFC with WinForms 上的示例。

【讨论】:

【参考方案3】:

通过 Visual Studio 托管的 C++ 至少从 2003 年开始就支持表单设计器 C++ with managed Extensions 和 C++/CLI 项目允许使用表单设计器,这里有一个快速的 hello world 示例来帮助您找到它。

【讨论】:

【参考方案4】:

有志者事竟成。如果您愿意跳过障碍,您可以混合和匹配几乎任何托管/非托管代码的组合。

这是一个很好的(虽然是旧的)概述: http://msdn.microsoft.com/en-us/library/ms973872.aspx

【讨论】:

以上是关于非托管代码中的 Windows 窗体?的主要内容,如果未能解决你的问题,请参考以下文章

将 Web Api 服务自托管到 Windows 窗体中

Windows 窗体中的 WCF 数据服务托管

如何在托管类中使用非托管类?

如何在Visual C ++中创建非托管Windows GUI?

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

C# 中的非托管 C++ 类