【问题标题】:C# dialog opened from c++从 C++ 打开的 C# 对话框
【发布时间】:2017-01-29 10:26:38
【问题描述】:

我有一个创建 MFC 对话框的 C++ 方法。该方法如下所示: IDialog* createDialog() - 对话框派生自 IDialog 接口; IDialog 接口只有一个方法 showDialog()。

我正在尝试重新创建相同的对话框,但使用 C# wpf。有什么方法可以在 C# 端添加支持以显示 C# wpf 对话框,甚至从 c++ 调用 createDialog()->showDialog()? c++ 端应保持不变,仅允许使用 CLI 包装器。

【问题讨论】:

  • 对您要达到的目标的描述非常模糊。猜测一下,您将需要 C++/CLI 和/或 COM。
  • 作为一个简短的总结:我在 c++ "createDialog()->showDialog()" 中有这个调用,它显示了相应的 MFC 对话框。我想要做的是用 C# WPF 替换 MFC 对话框。请注意,对话框是从 c++ 接口 IDialog 派生的
  • 你只是重复了一遍,你的问题是什么。第一次不清楚,重复它并没有使这个问题易于理解。问题很可能是您还不了解需要解决的问题。你需要先解决这个问题,然后improve你的问题完成后。

标签: c# c++ wpf mfc


【解决方案1】:

我觉得没什么难的...

1) 创建一个类并让它实现 IDialog 接口。 2) 声明类属性 ComVisible(true)

使用 System.Runtime.InteropServices;

// 如果 IDialog 是 COM 接口,则此方法有效 [ComVisible(真)] [Guid("your guid goes here")] // 不要让框架生成一个可以在构建之间改变的框架

public class MyClass : Window, IDialog
{
   public MyClass()
   {
   }

   public void showDialog()
   {
       // do your magic...
   }       
}

需要使用注册你的DLL:

regasm your.dll /tlb /codebase

您也可以只为 COM 互操作标记项目寄存器,但这只会在您的开发机器上帮助您。

我假设你已经知道如何实例化 COM 对象...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多