【发布时间】:2014-10-10 03:22:21
【问题描述】:
我需要将遗留 MFC 代码集成到我的 C# .Net 应用程序中。
为了简化集成,为了模拟我的 MFC 代码,我创建了一个示例 MFC Dialog 应用程序,带有一个按钮和一个编辑框。当我单击按钮时,它将 Hello World 写入编辑框。
我的目标是从我的 .Net 应用程序中调用它。如果我的 .Net 应用程序可以弹出对话框,并在我单击按钮时让它打印 HelloWorld,我会很高兴。我听说 C++/CLI 是执行此操作的好方法。如果动态链接使问题复杂化,我也可以使用静态链接。
首先,我想知道这是否可能?我不明白完成此操作所需的过程。
到目前为止:我从项目属性中启用了 CLR 支持,并创建了一个 C# WinForms 应用程序。我能够添加 MFC Dialog 应用程序作为对 C# WInforms 应用程序的引用。但我一直在寻找如何跨界面导出对话框。因为,我在做静态链接,我还需要为对话框类编写 dllexports 吗?如何导出所有对话框类,C# 将如何找到描述 GUI 如何为对话框布局的资源文件?
对话框的代码是 App Wizard 生成的,我只是添加了一个编辑框和一个按钮,并为将 HelloWorld 写入编辑框的按钮添加了一个处理程序。
首先,我尝试创建另一个 MFC 应用程序,看看是否至少可以从另一个 MFC 应用程序调用我的 MFC 对话框。在消费者应用程序中,我添加了我的 Hello World Dialog 应用程序作为参考,并包含了 Dialog 头文件的路径。但它给了我一个错误,说 IDD_DLG,即我的对话的 ID 是无法识别的。所以,我需要弄清楚如何提供资源文件,其中定义了所有 ID。
【问题讨论】:
标签: c# .net mfc c++-cli interop