如何使用C++建立COM元件(ATL專案)
阿新 • • 發佈:2019-01-26
這裡新增的類one就是一個介面,在.cpp中可以實現多個方法。
注意,不要忘記在test.idl檔案中宣告將要暴露出去的方法,one介面的clsid是:59CF380D-5F6C-44A0-BAC0-F81D1ADAE4CD。
如果有很多功能,為便於管理,可把所有實現功能的方法分類,一個介面管理一類方法。[ object, uuid(E2CC7541-888A-439B-BAA8-E144D91CE875), dual, nonextensible, pointer_default(unique) ] interface Ione : IDispatch{ [id(1), helpstring("方法SetParam")] HRESULT SetParam([in] LONG param1, [in] char param2); [id(2), helpstring("方法GetVersion")] HRESULT GetVersion([out,retval] BSTR* pVal); }; [ uuid(FC174988-A41D-4C99-99B4-E3083BA8ED6C), version(1.0), ] library testLib { importlib("stdole2.tlb"); [ uuid(59CF380D-5F6C-44A0-BAC0-F81D1ADAE4CD) ] coclass one { [default] interface Ione; }; };
呼叫演示
準備工作:1.把test.dll檔案放在system32(64位系統:SysWOW64)下;
2.通過命令列註冊該dll檔案:regsvr32 test.dll;
3.編輯測試頁面。
<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<TITLE>測試頁</TITLE>
</head>
<body>
<OBJECT ID="example" height="1" width="1" CLASSID="CLSID: "59CF380D-5F6C-44A0-BAC0-F81D1ADAE4CD"></OBJECT><script>
function Info() {
tb_result.value = "方法setparam:" + example.SetParam(9, "a") + "\r\n" + "\r\n";
tb_result.value = tb_result.value + "方法getversion:" + example.GerVersion() + "\r\n" + "\r\n";}
</script>
<input type="button" value="測試" onclick='Info()'/><br />
<textarea name="tb_result" rows="1" cols="20" id="tb_result"style="height:70%;width:70%;"></textarea><br />
</body>
</html>