C++ WPF应用程序是否仅为托管代码?
我想在应用程序中使用WPF。我想用C++写。是否必须管理应用程序?我知道我可以把管理和非管理混为一谈。我想知道是否可以让整个应用程序处于非托管状态。正如您已经知道的,您可以通过互操作将托管和非托管混合使用;但是,WPF在CLR上运行 下面是一篇关于网络的文章,其中一些人猜测未来的非托管版本: 以下是关于WPF/本机互操作的附加参考,如果您选择该路线:C++ WPF应用程序是否仅为托管代码?,c++,wpf,unmanaged,managed,C++,Wpf,Unmanaged,Managed,我想在应用程序中使用WPF。我想用C++写。是否必须管理应用程序?我知道我可以把管理和非管理混为一谈。我想知道是否可以让整个应用程序处于非托管状态。正如您已经知道的,您可以通过互操作将托管和非托管混合使用;但是,WPF在CLR上运行 下面是一篇关于网络的文章,其中一些人猜测未来的非托管版本: 以下是关于WPF/本机互操作的附加参考,如果您选择该路线: 您可以轻松地用非托管代码开发99%的WPF应用程序,但要使其完全非托管是相当困难的 WPF类没有Guid属性,因此它们不能与COM一起使用。因此
您可以轻松地用非托管代码开发99%的WPF应用程序,但要使其完全非托管是相当困难的 WPF类没有Guid属性,因此它们不能与COM一起使用。因此,使用100%非托管代码构建WPF对象(如按钮和窗口)需要一个非托管CLR API。这可能是最简单的,但它仍然是相当多的工作 如果您愿意接受99%的非托管代码,只需使用/clr选项编译应用程序,并使用IJW实例化WPF对象和调用application.LoadComponent等方法
还要注意,WPF绑定到非托管对象需要这些对象完全支持COM,包括IDispatch。为什么要在非托管代码中编写它?WPF构建在.NET框架上,由设计管理。如果您真的需要,您可以将非托管代码调用到interop中。读者应该注意,您的第一个链接中的推测是基于对PDC08会话的描述的,该会话后来证明是关于MIL的。在过去的两年里,我没有听到任何其他消息,也没有听到任何其他关于MIL可能被制作成公共API的猜测。即使是,也不会是WPF,因为MIL只包含低级原语。