開發.NET系統整合的時候,最常要處理、也是最棘手的問題都是廠商提供元件,什麼鬼都會遇到,雖然現在.NET已經慢慢腐蝕(?)廠商的技術人員,慢慢慣用.NET開發元件,但還是很多元老硬體廠商依然用微軟的老技術'提供給使用者,像.Lib/.h的靜態資函數、或是dll等動態連結資函數,甚至連OCX等ActiveX都會遇到。

給你.Lib/.h靜態資料庫,你就只有一個方法解,使用Visual C++去coding;給你動態連結好一點,建立一個import函數對應,只要他的型別不太複雜,這點可以放心,因為廠商也希望函數越簡單越好;而OCX通常是必須有UI的函數控制項,以及WEB需求的元件,例如攝影機DVR之類。

關於ActiveX元件的小技巧,因為ActiveX算是控制項,首先在工具列滑鼠右鍵,按下"選擇項目..”會開啟"選擇工具箱項目"的視窗,選擇COM元件後選擇廠商提供的OCX即加入元件,.NET自動會幫你Reference並用AxHost包裝,就可以把它當一般.NET控制項使用。

而有時你不希望ActiveX元件在視窗出現,或是希望當使用的建立,則需要注意,ActiveX是必須存在於UI上的控制項,如果沒經初始化,一定會出現System.Windows.Forms.AxHost +InvalidActiveXStateException的錯誤訊息。

因此,你必須用AxHost的BeginInit與EndInit來加入控制項將之初始化後才能使用,範例方式如下;

Dim test As New AxSDVRJRLib.AxSDVRJR

test.BeginInit()
Me.Controls.Add(test)
test.EndInit()

創作者介紹

傑克鼠的下午茶

傑克鼠 發表在 痞客邦 PIXNET 留言(0) 人氣()