ATL active 控件入门

win7 64位 PC

vs2010
IE8 32位

html 代码:

<HTML>
<HEAD>
</HEAD>
<BODY>
<object  classid="clsid:B07C631B-9F21-4EFB-AA01-6623A070ED24"  id="myAddObj" ></object>  
<p></p> 
<input type="button" value="init" onclick="init();" />
<p></p> 
<input type="button" value="test" onclick="test();" />

<script language="javascript"> 

    function init() {
        var calc = document.getElementById('myAddObj');
        var result = calc.Init(123); 
        alert(result); 
    }

    function test() {
        var calc = document.getElementById('myAddObj');
        var result = calc.Test(123); 
        alert(result); 
    }  

</script>

</BODY>


</HTML>

activeX 代码:
EtcControl.h中:
这里写图片描述

    HRESULT FinalConstruct()
    {
        return S_OK;
    }

    void FinalRelease()
    {
    }

public:



    STDMETHOD(Test)(VARIANT devType, LONG* result);
    STDMETHOD(Init)(VARIANT devType, LONG* result);
};

OBJECT_ENTRY_AUTO(__uuidof(EtcControl), CEtcControl)

EtcControl.cpp中:




STDMETHODIMP CEtcControl::Test(VARIANT devType, LONG* result)
{
    // TODO: 在此添加实现代码
    //*result = 99;

    *result = 99 ;

    return S_OK;
}

STDMETHODIMP CEtcControl::Init(VARIANT devType, LONG* result)
{
    // TODO: 在此添加实现代码
    //*result = 5;  

    *result = 55 ;

    return S_OK;
}

EtcComNFC.idl中

// EtcComNFC.idl : EtcComNFC 的 IDL 源
//

// 此文件将由 MIDL 工具处理以
// 产生类型库(EtcComNFC.tlb)和封送处理代码。

import "oaidl.idl";
import "ocidl.idl";

[
    object,
    uuid(48DC9034-C0C9-42F7-8282-2FBD4DCBA401),
    dual,
    nonextensible,
    pointer_default(unique)
]
interface IEtcControl : IDispatch{
    [id(1)] HRESULT Test([in] VARIANT devType, [out,retval] LONG* result);
    [id(2)] HRESULT Init([in] VARIANT devType, [out,retval] LONG* result);
};
[
    uuid(F78D37FB-8FFB-48F3-BCA2-9534B43ADE71),
    version(1.0),
]
library EtcComNFCLib
{
    importlib("stdole2.tlb");
    [
        uuid(937A2273-0902-41B6-9523-D5D6AA9BCB35)      
    ]
    dispinterface _IEtcControlEvents
    {
        properties:
        methods:
    };
    [
        uuid(B07C631B-9F21-4EFB-AA01-6623A070ED24)      
    ]
    coclass EtcControl
    {
        [default] interface IEtcControl;
        [default, source] dispinterface _IEtcControlEvents;
    };
};

如果需要添加函数接口,需要注意三个地方:

EtcComNFC.idl

EtcControl.cpp

EtcControl.h

注册控件的方法
regsvr32 EtcComNFC.dll

显示效果:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

下一步 需要整理一下 如何传参数:

猜你喜欢

转载自blog.csdn.net/wowocpp/article/details/80348238