2013-10-01 86 views
0

我在VS 2003中創建了一箇舊的MFC項目,我想將其移植到VS 2010中。該項目使用ActiveX控件來處理網格,即Component One的VSFlexGrid7。問題是,此版本的ActiveX控件在Windows 7中無法正常工作(這正是我所擁有的)。有一個更新版本的網格,即VSFlexGrid8,它應該與Windows 7兼容。如何在MFC對話框中替換/更新ActiveX控件

解決方案是將所有較舊的控件替換爲較新的控件。

我的問題是,更換控件的步驟是什麼,而不涉及項目的其他部分。什麼是最簡單的方法來完成這個?我是否需要修改類,資源ID等?

[解決方法:更換在.RC文件的CLSID]

回答

1

ActiveX控件通過代表控件的guid綁定到資源文件。如果您要查看.rc文件,您將看到帶有關聯GUID的控件。在你的情況下,假設你可以將新版本拖到同一個對話框中,最好從對話框中完全刪除控件(使用資源編輯器)。一旦你完成了,你需要爲控件生成一個新的類包裝器。班級嚮導應該能夠爲你處理。一旦你有了一個代表該控件的新類包裝器,你就需要在你的源代碼中替換先前的包裝器類。

1

通常控制在您使用的CreateInstance對話框代碼某處所創建。 如果接口是兼容的(我假設它是),那麼只需更改CreateInstance代碼中使用的名稱或GUID即可。

+0

我的代碼中沒有CreateInstance。我猜MFC通過調用OnInitDialog()函數首次創建對話框時會照顧到這一點。 – mihai

+0

這個組件是如何創建的?你把它拖到對話資源上了嗎? Afaik在這種情況下,這個組件的GUID在資源腳本中。 – xMRi

+0

是的,它是通過將ActiveX控件添加到對話框資源而創建的。我會嘗試更改.RC文件中的ID並查看它是如何工作的。 – mihai