前言
ActiveX是Microsoft對於一系列策略性面向對象程序技術和工具的稱呼,其中主要的技術是組件對象模型(COM)。框架
ActiveX控件是一種實現了一系列特定接口而使其在使用和外觀上更象一個控件的COM組件。ActiveX控件這種技術涉及到了幾乎全部的COM和OLE的技術精華,如可連接對象、統一數據傳輸、OLE文檔、屬性頁、永久存儲以及OLE自動化等。函數
ActiveX控件做爲基本的界面單元,必須擁有本身的屬性和方法以適合不一樣特色的程序和向包容器程序提供功能服務,其屬性和方法均由自動化服務的 IDispatch接口來支持。除了屬性和方法外,ActiveX控件還具備區別於自動化服務的一種特性--事件。事件指的是從控件發送給其包容程序的一 種通知。與窗口控件經過發送消息通知其擁有者相似,ActiveX控件是經過觸發事件來通知其包容器的。事件的觸發一般是經過控件包容器提供的IDispatch接口來調用自動化對象的方法來實現的。在設計ActiveX控件時就應當考慮控件可能會發生哪些事件以及包容器程序將會對其中的哪些事件感興趣並將這些事件包含進來。與自動化服務不一樣,ActiveX控件的方法、屬性和事件均有自定義(custom)和庫存(stock)兩種不一樣的類 型。自定義的方法和屬性也就是是普通的自動化方法和屬性,自定義事件則是本身選取名字和Dispatch ID的事件。而所謂的庫存方法、屬性和事件則是使用了ActiveX控件規定了名字和Dispatch ID的"標準"方法、屬性和事件。
ActiveX控件可使COM組件從外觀和使用上能與普通的窗口控件同樣,並且還提供了相似於設置Windows標準控件屬性的屬性頁,使其可以在包容器程序的設計階段對ActiveX控件的屬性進行可視化設置。ActiveX控件提供的這些功能使得對其的使用將是很是方便的。本文下面即以MFC爲工 具對ActiveX控件的開發進行介紹。
1、建立項目
1.打開VS2008新建MFC項目。這裏咱們取名爲「ActiveXDemo」 。
2.輸入項目名稱爲「ActiveXDemo」和項目位置。
點擊肯定進行下一步。
3.運行時許可證默認不勾選。
若是勾上,生成時會多出一個文件
.lic , 只有擁有許可的用戶才能夠調用ocx插件。繼續下一步。
4.完成建立控件項目自動建立好MFC ActiveX程序框架。
其中 的 ACtiveXDemoApp 是 我 們 這 個 控 件 的 主 程 序 模 塊 , 定 義 了 控 件的 注 冊
( DllRegisterServer)、刪除(DllUnregisterServer)等功能,通常不用動,若有須要咱們能夠
在其中的 InitInstance 和ExitInstance 中定義咱們本身的初始化和終止操做代碼,通常也就是一些資源的初始化和銷燬工做。
CActiveXDemoCtrl 是控件類,咱們要作的控件功能基本上就是要在這個類中實現。
須要提一下的是在這個類中重寫了父類的 OnDraw 函數,有以下兩句代碼:
pdc->FillRect(rcBounds,
CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
pdc->Ellipse(rcBounds);
也就是在控件上畫了一個橢圓, 實際控件開發中能夠根據功能須要修改重寫這個函數來
繪製控件界面。
CActiveXDemoCtrlPropPage 是屬性頁類,這個類實現了一個在開發時設定控件屬性的對話
框。
ActiveXDemoLib 是爲客戶程序提供本控件的屬性、方法以及可能響應的事件的接口的。
2、添加屬性,方法和事件工具
1.屬性spa
屬性是ACTIVEX控件想全部容器公開的數據成員。.net
以下圖右鍵添加屬性,屬性變量類型咱們選LONG,變量名爲TimeStyle,其餘默認。插件


2.方法命令行
方法就是控件開放給用戶使用的一些功能函數,相似於C++的類函數。開發人員能夠提供自定義功能。設計
以下圖所示咱們添加一個方法Start(),其餘默認。3d
以下圖所示,咱們能夠從類視圖清楚的看到咱們添加的屬性和方法名。xml
3.事件
ACTIVEX經過事件通知容器控件上發生了某些事情。將控件開發人員的某一特定操做識別爲事件。
以下圖所示,咱們添加事件,添加事件順序按照如圖所示。事件名咱們寫OnSend ,內部名稱習慣上修改成FIleOnSend.添加一個參數lpstrTime.

以下圖,咱們能夠清楚地看到咱們剛纔添加的事件
在start 事件中咱們調用showcurrenttime 函數,函數實現已經給出。接着咱們回調事件函數。
3、註冊與反註冊
1.惟一標識ID
以下圖Classid 是該控件的惟一標識,這個咱們能夠在註冊表裏找到。

2.註冊
命令行輸入regsvr32 控件路徑XXX
3.反註冊
反註冊控件regsvr32 -u 控件路徑XXX
到此咱們OCX 控件製做就完成了。