【问题标题】:Host Windows Forms (C#) Inside MFC Application (VC++,VS6.0)在 MFC 应用程序中托管 Windows 窗体 (C#) (VC++,VS6.0)
【发布时间】:2013-02-28 22:55:15
【问题描述】:

今天下午看了一大堆,没有得到任何切实的结果。是否可以在仍在使用 VC6 开发的 MFC 应用程序中托管 Windows 窗体对话框。

出现的问题是我们有一个大型应用程序从未使用新的 Visual Studio 升级,因为 VC6 始终可以正常工作。现在我们需要在其中添加一些 C# 功能。我无法执行 /clr 选项,因为我们的项目完全由非托管 C++ 组成。我在我们所有的库/头文件中搜索了“CWinFormsControl”,但没有找到任何东西。我不确定下一步该尝试什么。

另外,请原谅我在做研究以及对这种编程深度不熟悉时的任何无知。

我查看了以下文章:

【问题讨论】:

    标签: c# c++ winforms mfc


    【解决方案1】:

    CWinFormsControl 需要 MFC 8.0。

    您可以make your managed assembly a COM server(例如 ActiveX)并像任何其他 COM 服务器一样在 MFC 应用程序中使用它。

    【讨论】:

    • 按照我的指示,我得到了一个由我的 C# 对话框构建的 DLL。我现在如何在 C++ 中调用/初始化它?原谅我的无知。
    • CoCreateInstance,通过 early (#import +tlbexp) 或后期 bing (IDispatch) 调用表单的 ShowDialog 方法。
    【解决方案2】:

    我没有 VC6 来尝试这个,但我认为这应该是可能的;至少对于一个简单的模式 ShowDialog() 场景。

    您将使用 C++/CLI 创建一个新的程序集/DLL,并使用 /clr 标志进行编译。这将使用通常的__declspec(dllexport) 向您现有的 MFC 代码公开一个非托管 API。该实现将调用您的 C# 代码,该代码将在另一个程序集中存在。

    【讨论】:

    • 最好的方法是什么?我对此很陌生。任何指向正确方向的指针都会有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-05-18
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多