如何在C / C ++应用程序中使用Windows窗体?

时间:2009-10-05 02:58:59

标签: windows forms

我在开发环境下使用C / C ++创建了一个现有项目。 目前我们想使用Window Forms应用程序改进现有表单,但问题是现有项目使用Common Runtime Library = No / CLR和Runtime Library = / MTd。

但Windows窗体应用程序正在使用Common Runtime Library = / CLR和Runtime Library = / MDd。 请告知是否可以使用Windows窗体应用程序在现有项目中创建表单? 有没有关于此的教程?

MSDN的评论是: -

  

小心不要混用静电和   动态版本的运行时   库。有多个副本   一个进程中的运行时库   会导致问题,因为静电   一份副本中的数据不与之共享   另一份。链接器会阻止   你从静态和   一个.exe文件中的动态版本,   但你仍然可以得到两个(或   更多)运行时的副本   库。例如,动态链接   库与静态链接   (非DLL)版本的运行时   库使用时可能会导致问题   与链接的.exe文件   动态(DLL)版本的   运行时库。 (你也应该   避免混合调试和非调试   一个版本的库   流程。)
  http://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.71).aspx ..

2 个答案:

答案 0 :(得分:1)

简单的答案是否定的。一个更准确的答案是有点,但你可能不想。

可以为您的用户界面使用Windows Forms(即托管代码),为您的域逻辑使用其他内容(例如非.NET /非托管代码)。但是我想如果你问这个问题,那么你现在要做的事情有点多了。

我建议您使用Windows窗体创建用户界面,然后让该用户界面调用本机C / C ++ DLL。 Google for PInvoke关于如何从托管(.NET)代码调用非托管dll(C / C ++)。

如果你这样做,那么你可以更好地回答这个问题。

答案 1 :(得分:0)

我的公司软件通常必须具有混合托管和非托管代码和用户界面的模块。我们所做的是将模块分成它们自己的可执行文件,并将这些功能公开为COM localserver对象。这样,非托管代码可以具有用托管代码编写的用户界面。

但是,你需要做很多管道才能让它发挥作用。我们这样做是因为我们的应用程序已经在现场部署多年,并且需要数年时间才能使整个程序改造成.NET