在HTML中嵌入ActiveX控件时,如何知道是否会获得HWND?

时间:2014-02-28 23:41:30

标签: c++ visual-c++ atl win32ole

我有一个简单的ATL ActiveX控件,用C ++实现。

如果我将控件嵌入网页中,例如:

   <object id="api"
            classid="CLSID:<guid here>"
            height=400
            width=800></object>

我知道如果我在我的coclass构造函数中设置m_hWnd,我可以从m_bWindowOnly = true;中的控件获得HWND。这没问题。

如果我尝试从Javascript实例化此ActiveX控件,则过程如下:

var object = new ActiveXObject("registeredControlString");

但我没有获得HWND,我不确定如何将其插入DOM中。

我的问题:

在什么情况下我会得到一个可以从控件中引用的HWND?

1 个答案:

答案 0 :(得分:5)

你不会通过构造新的ActiveXObject来获得hwnd,因为你的CComControl :: CreateControlWindow()仅在就地激活期间被调用,而javascript根本没有类型系统来支持就地所需的COM接口激活。

如果您的控件将用作无UI的COM服务器(如脚本中所示),请将ActiveX设计为无窗口句柄。