[英]Is it possible to package WPF window as COM Object
我正在嘗試使用舊版c ++非托管gtk gui應用程序中的WPF窗口。 是否可以打包WPF窗口(包括xaml文件)並在c ++ gui應用程序中將其用作常規com對象。 您是否預見到這種方法存在任何問題或問題?
如果可能的話,任何鏈接或教程或任何有關如何操作的建議將非常有幫助。 謝謝。
我不知道有任何在線教程這樣做; 但它根本不應該是一個大問題。 我已經嘗試過像這樣實現smth並且它對我來說很好,下面是序列,如果我已經完成的步驟:
1.為您的解決方案添加“wpf用戶控件”或“wpf自定義控件”庫。
2.在新項目中添加一個新的WPF Window類(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表格。
另外,我相信下面的鏈接可能對您有用:
希望這有幫助,問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.