首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >鼠标事件BHO

鼠标事件BHO
EN

Stack Overflow用户
提问于 2010-03-09 08:25:13
回答 1查看 1.2K关注 0票数 1

我想让我的BHO监听某个网页中某个元素的onmousedown事件。我有找到特定元素的所有代码,并且在msdn中它告诉我需要使用get_onmousedown事件。我想出了这个代码。

代码语言:javascript
复制
 CComQIPtr<IHTMLElement> someElement;
 VARIANT mouse_eve;
 someElement->get_onmousedown(&mouse_eve);

问题是,当这个事件发生时,我如何告诉它运行一些函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-09 09:10:55

v - VT_DISPATCH类型的变量,指定具有默认方法的对象的IDispatch接口,该方法在事件发生时被调用。

此上下文中的事件处理程序是实现IDispatch的COM实例,因此您需要传递一个指向事件处理程序对象实现的IDispatch的指针:

代码语言:javascript
复制
CComQIPtr<IDispatch> spDisp(spMyHandler); // something like that
someElement->put_onmousedown(CComVariant(spDisp));

注意:` `put_ _instead of_ _get` -您想要注册一个处理程序。

在这一点上,使用以下命令调用IDispatch::Invoke()

包含

  • wFlags (“方法正在被调用”)
  • dispIdMember the DISPATCH_METHOD / 0 (“默认方法”)

总而言之,这应该是这样的:

代码语言:javascript
复制
HRESULT MyHandler::Invoke(DISPID dispIdMember, REFIID, LCID, WORD wFlags, 
                          DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*)
{
    // ...

    if((wFlags & DISPATCH_METHOD) && (dispIdMember == DISPID_VALUE)) 
    {
        // ...
    }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2405807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档