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

在WPF中托管本机控件 我有一个原生控件,用C++编写,使用DirectX 11,我想嵌入到WPF应用程序中。目前该控件托管在Windows应用商店应用程序中,运行良好。我提到这一点是为了防止商店应用程序兼容性很重要,c++,wpf,controls,C++,Wpf,Controls,基于,我的理解是,由于WPF执行自己的组合,并且只有一个窗口句柄,所以核心的复杂性是为本机控件提供另一个窗口句柄。因此,解决方案是向WPF页面添加WindowsFormHost控件或从HwndHost派生的控件,并以某种方式将WPF控件与本机控件关联 我通过了考试。但是,我的控件没有像ListBox(示例中使用的控件)那样注册到操作系统。因此,我无法将其作为参数传递给CreateWindowEx。我如何关联自己的控件?我是否创建WindowsFormsHost并调用SetParent(myCon

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

我通过了考试。但是,我的控件没有像ListBox(示例中使用的控件)那样注册到操作系统。因此,我无法将其作为参数传递给CreateWindowEx。我如何关联自己的控件?我是否创建WindowsFormsHost并调用SetParent(myControlsHandle,WindowsFormsHost.Handle)?还是创建WPF边框并将其子属性设置为HwndHost实例

WPF中还有其他与本机控件相关的问题(尽管后者是关于应用程序的,而不是关于控件),但没有一个解决这个问题


我研究了另一种方法,其中WPF控件与本机控件共享一个D3DImage,但这需要DirectX9EX,而我的控件是用Dx11编写的

在msdn中找到一篇文章。希望这有帮助。