時間:2009-12-22 作者:和尚釋然
一. 創建MFC ActiveX項目
1. 打開VS2005新建MFC項目。這裏我們取名爲“ActiveXDemo”。
2. 輸入項目名稱爲“ActiveXDemo”和項目位置。點擊“確定”按鈕,打開向導對話框。
3. 選擇“控件設置”選項卡,具體設置可參考上圖。其它選項卡爲默認設置。最後點擊“完成”按鈕保存設置。
二. 添加控件方法
VC2005會爲我們自動創建好MFC ActiveX程序框架,我們只要給該ActiveX控件添加方法即可。現在我們給控件添加一個“AddFun”方法,這個方法是將兩個數相加並返回結果。
1. 點擊“視圖”,打開“類視圖”窗口。
2. 展開“ActiveXDemoLib”項,選中“_DActiveXDemo”項。點擊鼠標右鍵,選擇“添加”下的“添加方法”。
3. 打開添加方法嚮導窗口。因爲我們是添加一個加法方法,所以我們設置的返回類型爲LONG型,方法名設爲AddFun,添加兩個LONG類型參數Add1,Add2。
4. 其它爲默認設置,點擊“完成”按鈕完成添加方法。接下來我們打開“解決方案資源管理器”打開“ActiveXDemoCtrl.cpp”文件。
5. 打開代碼視圖,我們會發現VC2005已經爲我們添加了一個“AddFun”方法,我們在方法內添加“return Add1 + Add2;”語句。
6. 最後生成項目。
三. 測試ActiveX控件
經過上面操作我們已經生成了OCX控件文件。接下來的步驟就是要將這個OCX控件嵌入在Html頁面中,通過Javascript來調用控件方法來測試我們的OCX控件是否能正常運行。
1. 我們用“EditPlus”新建一個Html文件,具體內容如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>ActiveX測試</title>
<script language = 'javascript'>
function AddFun()
{
var iResult = MYAvtiveX.AddFun(12, 11);//調用ActiveX控件的AddFun方法。
alert(iResult);
}
</script>
</head>
<body>
<object id="MYAvtiveX" classid="clsid: F0E7128D-E311-42F1-A0BA-88397960732E"> </object>
<fieldset>
<legend>MyActiveX測試</legend>
<table width="100%" border="1">
<tr>
<td width="20%"><input type='button' οnclick='AddFun()' value='AddFun'> </td>
</tr>
</table>
</fieldset>
</body>
</html>
上面的“classid”我們可以打開“ActiveXDemo.idl”文件獲得:
2. 最終的Html頁面顯示效果如下,點擊“AddFun”按鈕,彈出計算結果提示框。
========================注意點========================
1、 運行時許可證默認不勾選: 如果勾上,生成時會多出一個文件.lic , 只有擁有許可的用戶纔可以調用ocx插件
2、工程生成好之後,右鍵工程屬性,對其進行配置:(注意點 已在途中勾出)
3、 在 鏈接器—常規—註冊輸入選“是”, 如果編譯的時候出現,該錯誤提醒,有2個可能。 第一種: 你運行的VS2010 ,在Win7下,不是管理員級別。所以會出現權限不夠的問題。 第二種: 缺少對應的dll, 此時你可以使用 C++ 的工具 dependency ,對ocx 進行分析。查看到底缺少了那些dll 。然後下載到對應的 dll 將其 放入system32 目錄下,重新用工具再次分析。
4、 出現無法打開 ocx的編譯錯誤: 這個是由於你上次運行的 IE 瀏覽器沒有關閉,ocx被佔用導致。
最後附上 一段 批處理的代碼,稍微可以方便點。。。
- %SystemRoot%\system32\regsvr32.exe safeIpos2.ocx
- copy safeIpos2.ocx %SystemRoot%\system32
將其保存成 .bat 文件,運行。