마우스 이벤트 bho
-
18-09-2019 - |
문제
나는 내 BHO가 특정 웹 페이지에서 일부 요소의 OnMousedown 이벤트를 듣기를 원합니다. 특정 요소를 찾는 모든 코드가 있으며 MSDN에서는 사용해야한다고 말합니다. get_onmousedown 이벤트. 나는이 코드를 생각해 냈다.
CComQIPtr<IHTMLElement> someElement;
VARIANT mouse_eve;
someElement->get_onmousedown(&mouse_eve);
문제는이 이벤트가 발생할 때 어떤 기능을 실행하라고 어떻게 말합니까?
해결책
v
- 이벤트가 발생할 때 호출되는 기본 메소드가있는 객체의 idispatch 인터페이스를 지정하는 유형 vt_dispatch의 변형.
이 맥락에서 이벤트 처리기는 구현하는 인스턴스입니다. 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