Csharp/C#教程:是否可以将WPF窗口打包为COM对象分享


是否可以将WPF窗口打包为COM对象

我正在尝试使用旧版c ++非托管gtk gui应用程序中的WPF窗口。 是否可以打包WPF窗口(包括xaml文件)并在c ++ gui应用程序中将其用作常规com对象。 您是否预见到这种方法存在任何问题或问题?

如果可能的话,任何链接或教程或任何有关如何操作的建议将非常有帮助。 谢谢。

我不知道有任何在线教程这样做; 但它根本不应该成为一个大问题。 我已经尝试过像这样实现smth,它对我来说很好,下面是序列,如果我已经完成的步骤:

1.为您的解决方案添加“wpf用户控件”或“wpf自定义控件”库。

2.在新项目中添加一个新的WPF窗口类(Add-> Window – > …)。 然后将你喜欢的wpf控件添加到新窗口,以检查它是否可以在以后运行

3.添加新的类和库项目的接口,并像下面的示例一样定义它:

[ComVisible(true)] [Guid("694C1820-04B6-4988-928F-FD858B95C881")] public interface ITestWPFInterface { [DispId(1)] void TestWPF(); } [ComVisible(true)] [Guid("9E5E5FB2-219D-4ee7-AB27-E4DBED8E123F"), ClassInterface(ClassInterfaceType.None)] public class TestWPFInterface : ITestWPFInterface { public void TestWPF() { Window1 form = new Window1(); form.Show(); } } 

4.使您的程序集可见(在项目属性的“构建”选项卡中注册COM互操作密钥)并为其指定一个强名称(请参阅签名选项卡); 使用sn实用程序生成密钥

5.完成以上所有操作后,您将在debug release文件夹中生成your_wpf_lib.tlb文件

6.在你的c ++应用程序中(我猜你有源代码并且可以重新编译),添加以下行:

导入“C: full_path_to_your_tlb your_wpf_lib.tlb”

这应该在你的win32项目调试输出文件夹中生成适当的tlh文件。

7.现在你可以用c ++代码调用你的表单:

 TestWPFForms::ITestWPFInterfacePtr comInterface(__uuidof(TestWPFForms::TestWPFInterface)); comInterface->TestWPF(); 

这应该显示你的wpf表格。


另外,我相信下面的链接可能对您有用:

从非托管C ++代码调用托管.NET C#COM对象

WPF和Win32互操作概述

希望这会有所帮助,问候

上述就是C#学习教程:是否可以将WPF窗口打包为COM对象分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1006213.html

(0)
上一篇 2021年12月28日
下一篇 2021年12月28日

精彩推荐