我有一個ActiveX控件項目(.ocx),其中包含一個主控制類和幾個其他ATL簡單對象。主要的控制類暴露了許多功能;如果我可以在其他ATL對象中使用這些函數中的一些,這將是切實可行的。這可能嗎?我是否必須在其導出的ATL對象之一中實例化我的ActiveX控件(以及如何?),還是有其他方法?我可以從同一個項目中的另一個ATL簡單對象訪問ActiveX項目功能嗎?
0
A
回答
1
雖然你沒有在你的問題中提到它,但我假設你目前沒有訪問要創建的對象的接口/ coclass decalration。
如果要使用的控件具有與其關聯的應用程序標識,則可以使用#import
指令將接口和類型定義直接引入到C++源文件中。例如,如果應用程序ID爲「Library.MainObject」你可以不喜歡下面
#import "progid:Library.MainObject"
這將直接訪問對象的類型庫。如果它沒有與之關聯的應用程序ID,則可能需要執行一些額外的步驟。獲取類型庫的一種方法是使用Visual Studio附帶的OLE Object Viewer實用程序。一旦在Object Viewer中找到它,您可以將類型庫保存爲文件。如果在對象查看器中找不到它,則可以嘗試直接打開OCX模塊,如果它包含類型庫,則可以將其導出到文件中。一旦你有了類型庫,你可以使用#import
來引入聲明。
#import "typelibraryname.tlb"
一旦你獲得了聲明,你可以調用CoCreateInstance
就像你對任何其他COM對象。您可以使用__uuidof(typename)來獲取接口或協同類的GUID。
相關問題
- 1. 如何從一個項目訪問webservice到另一個項目
- 2. ExtJS視口訪問另一個項目的一個項目
- 3. 從另一個web項目訪問Sitecore
- 4. 從Eclipse的另一個Java Web項目中的一個項目訪問類
- 5. 訪問TOMCAT中的另一個項目
- 6. ADF項目有可能參考另一個ADF項目嗎?
- 7. 在visual studio C++中從一個項目訪問變量到另一個項目
- 8. 訪問另一個項目中的類型從一個DLL(C#)
- 9. 一個簡單的項目
- 10. 訪問maven項目中的類到另一個java項目
- 11. 我可以在另一個多項目中使用多項目嗎?
- 12. 從另一個項目中缺少對XNA ContentManager的訪問
- 13. 我可以在另一個項目中調用JavaScript函數嗎?
- 14. 從另一個項目中的一個項目調用類?
- 15. 我可以從一個ror項目遷移文件到另一個嗎?
- 16. Visual Studio Online一個項目團隊成員可以訪問其他項目嗎?
- 17. 我可以在同一解決方案中訪問另一個項目的嵌入式資源嗎?
- 18. 我可以在同一個項目中使用RxAndroidBle和RxJava2嗎?
- 19. 將工作項目從一個項目移動到另一個項目的最簡單方法是什麼?
- 20. itemprop可以從一個div引用另一個div中的項目嗎?
- 21. Android項目可以嵌套在另一個項目中
- 22. 我可以將Nuget軟件包配置從一個項目複製到另一個項目嗎?
- 23. 從同一個網格的另一個項目中修改網格textview項目
- 24. 在visual studio C++中訪問另一個項目的對話框中的一個項目的對話框
- 25. 我可以從一個項目創建多個dll嗎?
- 26. 如何在舊的ATL DLL項目中添加一個「ATL簡單對象」升級到VS 2010?
- 27. 如何創建一個Global FileInputStream對象,該對象可以從我的項目中的其他類訪問?
- 28. 從Visual Studio的另一個項目運行一個項目
- 29. 從另一個項目
- 30. 從另一個項目
使用'CoCreateInstance()'就像創建任何COM對象一樣。 –
我認爲你應該考慮反應你的功能。如果.ocx公開的功能值得其他組件使用(或任何通常不會託管.ocx的功能),它很可能會暴露在錯誤的位置。嘗試將該功能分離到它自己的組件中(或者作爲其中一個現有組件的一部分)。如果功能對OCX上下文以外的外部客戶端沒有意義,那麼可以將該功能移到內部可用於所有COM對象的常規C++類,並使OCX簡單地將調用轉發給此C++類。 –