vc6開發activex併發布全攻略(一)

原文:http://flashaway.blog.163.com/blog/static/95624576200942211853685/

小南瓜餅(^^):http://blog.csdn.net/Ibznphone

 最近空閒時間比較多,自己研究了下ActiveX的技術。前面轉載了一篇用c#開發ActiveX的文章,照着做了下,成功了,但畢竟xp的用戶比較多,系統沒有自帶.netFramework,所以c#開發的ActiveX還不能普及。所以想學下用vc++開發ActiveX控件。由於我現在開發用的是c#和java語言,對c++還很陌生,所以花了半天看了下c++語法,但收效甚微。憑着自己多年來利用Baidu和Google 的成功經驗和自己屢敗屢戰的意志,終於磕磕絆絆的完成了一個簡單的ActiveX,並能通過IE讓用戶下載安裝。

先說下我的開發環境:

開發工具:vc6.0

操作系統:win2003

IE版本:IE7.0

 

做開發之前,在網上查了下vc開發activeX的資料,得知vc開發ActiveX可選兩種框架,一種是ATL COM結構,還有一種是MFC結構。經過篩選,還是選擇了MFC結構,因爲這種方式開發比較普遍。那開發之前我們得先知道MFC到底是什麼,這裏我就不多講了,去Baidu下,如果你看完以後沒有理解,那很正常,因爲我也沒看懂,呵呵。

理論沒看懂不要緊,但起碼你得知道MFC程序是怎麼開發的啊,經過Baidu找到一個MFC的例子,很經典,是內地一女程序員寫的,寫的比較經典,也很詳細,照着她寫的例子在VC6.0上寫了一遍,收穫不小。由於是女的寫的,語句也比較女性化,所以我也不方便轉載,這裏貼出她的blog地址,強烈建議你去照着做一遍,因爲我這篇文章不會講MFC是什麼,怎麼實現(其實我到現在也沒理解,呵呵):

http://sakura006.blog.hexun.com/31435400_d.html

那下面我們就開始VC開發ActiveX的旅程,不足之處還望高人指點,也請讀者海涵:

一.打開vc6.0,新建一個MFC ActiveXControlWizard項目:  

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

 

工程名稱隨便起,比如我的叫MyActiveX。點擊確定,一路默認下一步,完成後生成的文件目錄如下:

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

生成的文件包括源文件夾,頭文件夾和資源文件夾。還是那句話,想知道這些文件具體都是做什麼的,去問下百度,我這裏只講步驟。

二.其實這個工程本身生成的就是一個ActiveX控件,它的功能是在頁面上畫個圓。那我們現在先查看下效果。直接點擊F7,控制檯顯示編譯成功,並生成MyActiveX.ocx文件。 

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

我的這個工程目錄是在E:\MyPro下,那生成的MyActiveX.ocx就在E:\MyPro\MyActiveX\Debug下:

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

恩,就是那個萬花叢中一行紅的那個。

那我們看看運行效果。

點開vc的工具->ActiveX Control Test Container菜單,如果你的VC看不到這個選項,那你可能是安裝了精簡版:vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

彈出下面這個對話框:

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

然後選擇edit->Insert New Control選項彈出下面這個窗口:

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客 

 

 

然後選擇edit->Insert New Control選項彈出下面這個窗口:

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

在列表中我們可以看到MyActiveX這個我們剛剛生成的控件。選擇OK,看看效果,一個圓:

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

這個工具很好用,我們在activeX中的自定義方法在這個測試容器裏測試:

選擇Control->InvokeMethods選項:

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

彈出下面的對話框:

vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

選擇方法名,通過parmeter列表還可以設置方法的參數,設置好以後,點擊Invoke就可以看到我們自定義方法的效果。如果只返回參數,那返回的結果就顯示在Return文本框裏。如果是彈出對話框,那將彈出你設計的對話框。現在方法中只有一個系統默認的彈出軟件相關的一個對話框。看看:vc6開發activex併發布全攻略(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

 

三.下面我們就在activex中添加自定義方法。

     這個自定義方法很簡單,就是增加一個test(short  a,short b)方法,返回a+b的值。也許某些高手看到這裏會笑,這麼簡單的方法還好意思寫啊。呵呵。沒關係,畢竟這篇文章只是菜鳥之作,給入門者看的。

  選擇左邊工程目錄的ClassView選擇項(下圖中紅色方框裏的),也就是顯示類圖:.下面我們就在activex中添加自定義方法。

     這個自定義方法很簡單,就是增加一個test(short  a,short b)方法,返回a+b的值。也許某些高手看到這裏會笑,這麼簡單的方法還好意思寫啊。呵呵。沒關係,畢竟這篇文章只是菜鳥之作,給入門者看的。

  選擇左邊工程目錄的ClassView選擇項(下圖中紅色方框裏的),也就是顯示類圖:

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

然後選擇菜單查看->建立類嚮導,彈出對話框:

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

選擇上圖中automation(自定義)標籤頁,ClassName選擇CMyActivexCtr類,因爲我們自定義的方法一般都是在Ctrl這個類文件中實現的。選擇Add Method按鈕,彈出對話框:

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

在External name填入我們的方法名。比如我的這個方法叫做test,有兩個參數a和b,如下圖:

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

點擊確定:

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

繼續確定,看看工程類列表有什麼變化:

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

恩,多了兩項:一個test的接口和一個test的實現類。

雙擊test實現類,也就是上面圖中的第二個紅框類,找到

short CMyActiveXCtrl::test(short a, short b)

{

       // TODO: Add your dispatch handler code here

       return 0;

}

方法,將它改爲

short CMyActiveXCtrl::test(short a, short b)

{

       // TODO: Add your dispatch handler code here

       return a+b;

}

呵呵,只是將return 0該成了return a+b;

直接F7,

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

顯示編譯成功。

那現在再打開vc的工具->ActiveX Control Test Container菜單(參照前面的圖)。選擇MyActivex控件,然後再選擇Control->InvokeMethods選項:

看看,在MethodName中多了一個test方法,而且有兩個參數a,b

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

通過SetValue給a與b賦值。點擊invoke在Return中就會顯示結果,2+4=6:

vc6開發activex併發布全攻略(一)(初級篇)(原創) - 一閃而過 - 一閃而過的博客

 

那我們這個Activex就算做好了,在E:\MyPro\MyActiveX\Debug目錄下的MyActiveX.ocx就是我們的成品。下面就進行發佈工作。

在網上找了很多資料,費了很大勁才找到一個適合我們菜鳥級學習的博文。那我在下一篇中轉載並做補充。因爲在發佈過程中出現了很多莫名奇妙的問題。這一篇只是我們漫長旅程的開始。

   未完待續……………….. 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章