我想從傳統C++非託管gtk gui應用程序中使用WPF窗口。是否有可能打包WPF窗口(包括xaml文件)並將其作爲常規com對象在C++ gui應用程序中使用。你有沒有預見到這種方法的任何問題或問題?是否有可能將WPF窗口打包爲COM對象
如果可能的話,任何鏈接或教程或任何建議如何做到這一點將是非常有益的。 謝謝。
我想從傳統C++非託管gtk gui應用程序中使用WPF窗口。是否有可能打包WPF窗口(包括xaml文件)並將其作爲常規com對象在C++ gui應用程序中使用。你有沒有預見到這種方法的任何問題或問題?是否有可能將WPF窗口打包爲COM對象
如果可能的話,任何鏈接或教程或任何建議如何做到這一點將是非常有益的。 謝謝。
我不知道任何在線教程,但它應該不是一個大問題。我已經嘗試過這樣實現,並且對我來說工作得很好,下面是我已經完成的步驟:
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可見(在項目屬性的Build選項卡中註冊COM互操作鍵)併爲其指定一個強名稱(請參閱簽名選項卡);產生與SN實用關鍵
5.Once以上所有做過。你要(在調試\發佈文件夾中生成
6.In你的C++應用程序your_wpf_lib.tlb文件我想你有來源,並可以重新編譯),添加以下行:
進口 「C:\ full_path_to_your_tlb \ your_wpf_lib.tlb」
這應該會在你的Win32項目調試輸出F適當TLH文件老。
7.now你可以從C調用你的表格++代碼:
TestWPFForms::ITestWPFInterfacePtr comInterface(__uuidof(TestWPFForms::TestWPFInterface));
comInterface->TestWPF();
這應該表現出你的WPF的形式。
而且我相信以下鏈接可能對您有用:
Calling Managed .NET C# COM Objects from Unmanaged C++ Code
WPF and Win32 Interoperation Overview
希望這會有所幫助,至於
我從來沒有得到它的過程中的工作。本地服務器很好 http://stackoverflow.com/questions/1617343/wpf-resources-addin – adrianm 2010-02-03 06:59:51