Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ WPF应用程序是否仅为托管代码?_C++_Wpf_Unmanaged_Managed - Fatal编程技术网

C++ WPF应用程序是否仅为托管代码?

C++ WPF应用程序是否仅为托管代码?,c++,wpf,unmanaged,managed,C++,Wpf,Unmanaged,Managed,我想在应用程序中使用WPF。我想用C++写。是否必须管理应用程序?我知道我可以把管理和非管理混为一谈。我想知道是否可以让整个应用程序处于非托管状态。正如您已经知道的,您可以通过互操作将托管和非托管混合使用;但是,WPF在CLR上运行 下面是一篇关于网络的文章,其中一些人猜测未来的非托管版本: 以下是关于WPF/本机互操作的附加参考,如果您选择该路线: 您可以轻松地用非托管代码开发99%的WPF应用程序,但要使其完全非托管是相当困难的 WPF类没有Guid属性,因此它们不能与COM一起使用。因此

我想在应用程序中使用WPF。我想用C++写。是否必须管理应用程序?我知道我可以把管理和非管理混为一谈。我想知道是否可以让整个应用程序处于非托管状态。

正如您已经知道的,您可以通过互操作将托管和非托管混合使用;但是,WPF在CLR上运行

下面是一篇关于网络的文章,其中一些人猜测未来的非托管版本:

以下是关于WPF/本机互操作的附加参考,如果您选择该路线:


您可以轻松地用非托管代码开发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只包含低级原语。