扩展C++/带有C+中插件的MFC应用程序+/MFC和C#

扩展C++/带有C+中插件的MFC应用程序+/MFC和C#,c#,c++,plugins,mfc,c++-cli,C#,C++,Plugins,Mfc,C++ Cli,我想知道如何最好地开发一个插件框架,在这个框架中,您可以同时使用C++/MFC和C#开发插件 宿主程序是用本机C++/MFC开发的现有程序。为了扩展这个程序的功能,到目前为止,我们已经在C++/MFC和C#中开发了单独的程序,作为单独的应用程序或windows服务运行。这些程序现在通过文件与主机应用程序通信。这显然是一种相当笨拙的方法,因此我们希望将它们放在一个通用的插件框架下 每个程序还具有单独的设置管理。因此,我们希望每个插件在主机应用程序中扩展设置窗口,以便所有设置都可以在一个地方进行管理

我想知道如何最好地开发一个插件框架,在这个框架中,您可以同时使用C++/MFC和C#开发插件

宿主程序是用本机C++/MFC开发的现有程序。为了扩展这个程序的功能,到目前为止,我们已经在C++/MFC和C#中开发了单独的程序,作为单独的应用程序或windows服务运行。这些程序现在通过文件与主机应用程序通信。这显然是一种相当笨拙的方法,因此我们希望将它们放在一个通用的插件框架下

每个程序还具有单独的设置管理。因此,我们希望每个插件在主机应用程序中扩展设置窗口,以便所有设置都可以在一个地方进行管理。我们如何以灵活和简单的方式做到这一点

(……)因此,我们希望将它们置于一个通用插件框架之下。(……)

您可以通过在类型库中创建一组COM接口来实现这一点,这些接口可以封装在C++/MFCDLL项目中。然后从C++或C语言导入该类型库并创建实现预定义接口的新COM类。这些方法的两个缺点是:1-主应用程序需要知道类ID才能创建COM类的实例。2-您的插件需要在系统上注册,或者您需要提供

(…)因此,我们希望每个插件在 托管应用程序,以便可以在一个位置管理所有设置。(……)

这个有点棘手,但是您可以尝试为每个插件使用一个选项卡的选项卡控件,然后在初始化期间将相应选项卡的窗口句柄传递给每个插件,然后使用该控件在其上放置ActiveX控件。在MFC中创建ActiveX控件有很好的文档记录,这里有一个在C#中创建ActiveX控件的示例项目: