【问题标题】:How do I know if I will get an HWND when embedding an ActiveX control in HTML?我如何知道在 HTML 中嵌入 ActiveX 控件时是否会获得 HWND?
【发布时间】:2023-04-05 23:57:02
【问题描述】:

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

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

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

我知道如果我在我的 coclass 构造函数中设置了m_bWindowOnly = true;,我可以从m_hWnd 的控件中获得一个HWND。这工作正常。

如果我尝试从 Javascript 实例化这个 ActiveX 控件,过程如下所示:

var object = new ActiveXObject("registeredControlString");

但我没有得到 HWND,我不确定如何将它插入 DOM。

我的问题:

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

【问题讨论】:

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


    【解决方案1】:

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

    如果您的控件将用作无 UI 的 COM 服务器(如您的脚本中的此处),请将您的 ActiveX 设计为无需窗口句柄即可工作。

    【讨论】:

    • 对不起,我不清楚;我确实想要一个用户界面。是否可以从new ActiveXObject(...)插入控件?
    猜你喜欢
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多