c++ - 在 WPF 中托管 native 控件

标签 c++ wpf controls

我有一个用 C++ 编写并使用 DirectX 11 的 native 控件,我想将其嵌入到 WPF 应用程序中。目前该控件托管在 Windows 应用商店应用程序中,并且运行良好。我提到这一点是为了防止商店应用程序兼容性很重要。

基于 Hosting Win32 Content in WPF ,我的理解是,因为 WPF 执行自己的组合,并且具有单个窗口句柄,核心复杂性是为 native 控件提供另一个窗口句柄。因此,解决方案是向 WPF 页面添加 WindowsFormHost 控件或派生自 HwndHost 的控件,并以某种方式将 WPF 控件与 native 控件相关联。

我浏览了 Hosting a Win32 Control in WPF walkthrough on MSDN .但是,我的控件没有像 ListBox(示例中使用的控件)那样在操作系统中注册。所以,我不能将它作为参数传递给 CreateWindowEx。如何关联自己的控件?我是否创建 WindowsFormsHost 并调用 SetParent(myControlsHandle, windowsFormsHost.Handle)?还是创建 WPF Border 并将其 Child 属性设置为 HwndHost 实例?

还有其他与 WPF 中的 native 控件相关的问题(herehere,虽然后者是关于应用程序,而不是控件),但没有一个解决这个问题。

我研究了一种不同的方法,其中 WPF 控件与 native 控件共享 D3DImage,但这需要 DirectX9EX,而我的控件是用 Dx11 编写的。

最佳答案

在 msdn.hope 中找到一篇文章,希望对您有所帮助。 http://msdn.microsoft.com/en-us/library/ms742522(v=vs.110).aspx

关于c++ - 在 WPF 中托管 native 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23504180/

相关文章:

c# - 如何从列表框中的项目访问复选框

c# - 如何将 wpf 的图像源属性设置为 Canvas 而不是图像 url?

c - 为什么禁用带有 WS_CHILD 的父窗口内的编辑控件?

delphi - 复合组件的选择框未正确绘制

c++ - 使用 cin.get 获取整数

c++ - 在代码中定义指令以分隔代码版本

java - 使用 JNI 将数据从 Java 复制到 C++ 对象数组

c++ - Eigen :累积可变大小的数组

wpf - 更改 TabItem 的标题字体粗细

c# - 我们可以将 .asmx 链接到 asp.net 控件吗?