我可以从WPF UserControl创建ActiveX控件并在非CLI C++应用程序中使用吗?

Dav*_*ght 7 c++ wpf activex winforms

我创建了一个可以作为ActiveX控件公开的Windows窗体UserControl.现在我试图用WPF UserControl做同样的事情.我注意到的Winforms UserControl基类是ComVisible,但是WPF UserControl类不是.我想做不可能的事吗?

是实现此目的的唯一方法是编写WPF控件然后使用ElementHost将其嵌入Winforms UserControl中,然后将Winforms UserControl公开为ActiveX控件?

jsc*_*edl 8

是的,我认为ElementHost是您可能需要使用的方法,如果有可能的话.

这是因为WPF控件本质上是无窗口的,所有内容都通过WPF maanges的DirectX表面以保留模式呈现.

"无窗口"ActiveX控件有接口,但.NET提供的COM互操作也不会将这些接口映射到WPF对象上.

  • 我得到它在ElementHost类的帮助下在WinForms中工作。我编写了WPF Telerik Grid包装程序,使用Child属性将WPF控件添加到ElemeHost中,然后将WinForms UserControl公开为ActiveX控件。现在,它可以在我的非CLI C ++应用程序中使用。 (2认同)