2008年11月12日 星期三

[C++] 動手幫自己的 ActiveX 加一個Method

snap003 

只要你的物件實做符合 ActiveX 規定的介面, 那麼所有你的元件就可以在任何支援 ActiveX 的環境下執行 包含 IE. 如果想要一句話解釋這東西, 那麼最簡單最不負責任的說法, 就是物件版本的 dll 吧.

問題是大家似乎都不清楚要如何增加這東西一個 method , 所以一般都使用 Visual Studio 中的MFC ActiveX Control 精靈 ,幫我們增加 method或操作. (我知道有一種東西是 ATL, 今天我們先不討論這個)

 

可是你知道精靈到底在後面搞什麼鬼嗎?

只有手動自己加你才會知道真相. 當你會自己加 method 後 你就會知道怎麼移除一個 method.

 

別擔心整個流程只有 5 個步驟, 其中只有一開始的三個步驟你不熟.

我們開始吧. ^_^

本文內容:

1. 手動增加 ActiveX 元件 method

2. 簡單的 ActiveX Control Pad 取得 元件的 html 寫法

3. 在 IE 上, 簡單測試你的 新method

下載:  完整專案

手動增加 ActiveX 元件 method

Step 1:  在 xx.idl 中加入一個新的 Method

[id(2), helpstring("method cc")] void cc(ULONG 參數);

詳細如下:

snap003

 

Step 2:  到 xxCtrl.h 中, 新增一個號碼 id

dispidcc=2L

(因為前面已經有一個 method bb, 所以我們的 id 要設定為 2)

詳細如下:

snap003

(別忘了兩個 id 之間要用逗號分開)

Step 3: 在 xxCtrl.cpp 中, 加入 Dispatch map

DISP_FUNCTION_ID(CkkCtrl, "cc", dispidcc, cc, VT_EMPTY, VTS_UI4)

詳細如下:

snap003

 

接下來是我們熟悉的部分,

Step 4: 在 xxCtrl.h 中, 新增 你的 method prototype

void cc(ULONG CallerID);

詳細如下:

snap003

 

Step5: 在 xxCtrl.cpp 中,  加入你的 method 實做

------------------------in xx Ctrl.cpp -------------------

void CkkCtrl::cc(ULONG CallerID){
    MessageBox(_T("Hello, I am cc"),_T("cc"),MB_OK);
}

 

Step 6: 完成

簡單的 ActiveX Control Pad 取得 元件的 html 寫法

:檢測我們的新 method

Step 1: 啟動 ActiveX Control Pad 

(下載)

snap003

 

Step 2:  加入我們的 ActiveX 元件

snap003  snap003

 

Step 3: 關掉 Edit ActiveX Control 視窗

snap003

 

Step 4: 儲存產生出來的 Html 檔

snap003

 

Step 5: 撰寫一個簡單按鈕測試

<HTML>
<HEAD>
<TITLE>New Page</TITLE>
</HEAD>
<BODY>

<OBJECT ID="kk1" WIDTH=100 HEIGHT=51
CLASSID="CLSID:2E01A484-897A-488F-AFEA-7F32F1A115FB">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
<input type="button" onclick='kk1.cc(123);' value="測試 cc method" />

</BODY>
</HTML>


Step 6: 按下測試



snap003



 



Step 7: 完成 



 



 



 



希望對你有幫助.   Enjoy.



by Jing

沒有留言:

張貼留言