-
18-09-2019 - |
题
我想我BHO听onmousedown事件的一些元素在某些网页。我有所有的代码,找到具体元件,并在msdn地说,我需要用 get_onmousedown 事件。我想出了这个代码。
CComQIPtr<IHTMLElement> someElement;
VARIANT mouse_eve;
someElement->get_onmousedown(&mouse_eve);
问题是,我该如何告诉它运行的一些职能在这个事件发生的时候?
解决方案
v
-变种类型VT_DISPATCH指定IDispatch interface的一个对象有一个默认的方法,援引当事件发生。
事件处理程序在这方面COM实例的实施 IDispatch
-所以你需要通过一个指示 IDispatch
您的事件的处理程序的对象实现:
CComQIPtr<IDispatch> spDisp(spMyHandler); // something like that
someElement->put_onmousedown(CComVariant(spDisp));
注: put_
而不是的 get_
-你想注册一个处理程序.
在此, IDispatch::Invoke()
被称为:
wFlags
含有DISPATCH_METHOD
("一个方法是获得援引")dispIdMember
正在0
/DISPID_VALUE
("默认方法")
放在一起,这应成为类似:
HRESULT MyHandler::Invoke(DISPID dispIdMember, REFIID, LCID, WORD wFlags,
DISPPARAMS*, VARIANT*, EXCEPINFO*, UINT*)
{
// ...
if((wFlags & DISPATCH_METHOD) && (dispIdMember == DISPID_VALUE))
{
// ...
}
}
不隶属于 StackOverflow