2013-02-26 80 views
3

我想知道如何最好地開發一個插件框架,您可以在其中開發C++/MFC和C#插件。在C++/MFC和C#中使用插件擴展C++/MFC應用程序

宿主程序是在本機C++/MFC中開發的現有程序。爲了擴展這個程序的功能,我們迄今爲止在C++/MFC和C#中開發了單獨的程序,它們作爲單獨的應用程序或Windows服務運行。這些程序現在正在通過文件與主機應用程序進行通信。這顯然是一種相當笨拙的方法,因此我們希望將它們納入一個通用的插件框架中。

每個程序還具有單獨的設置管理。因此,我們希望每個插件都可以在主機應用程序中擴展設置窗口,以便可以在一個位置管理所有設置。我們如何以靈活和簡單的方式來做到這一點?

回答

1

(...)我們因此希望將它們置於通用插件框架下。 (...)

您可以通過在可以包裝在C++/MFC dll項目中的類型庫中創建一組COM接口來實現此目的。然後從C++或C#中導入此類型庫並創建實現預定義接口的新COM類。這些方法的兩個缺點是:1-您的主應用程序需要以某種方式知道類ID來創建COM類的實例。 2-您的插件需要在系統上註冊,否則您需要提供manifest files

(...)因此,我們希望每個插件都擴展主機應用程序中的設置窗口,以便可以在一個位置管理所有設置。 (...)

這一個有點棘手,但你可以嘗試讓每個插件有一個標籤控制,然後將相應標籤的窗口句柄傳遞給每個插件在初始化期間,然後用它來放置一個ActiveX控件。在MFC中創建ActiveX控件已有詳細記錄,並且在此處有一個用於在C#中執行相同操作的示例項目:CSActiveX Sample

相關問題