Ne pas recevoir les arguments d'événement dans le gestionnaire d'événements IHTMLElement
-
02-07-2019 - |
Question
J'ai ajouté un rappel à une instance IHTMLElement, mais lorsque IDispatch :: Invoke est appelé pour l'événement, il n'y a jamais d'argument (c'est-à-dire que pDispParams- > cArgs et pDispParams- > cNamedArgs sont toujours égaux à 0). Par exemple, j'ajoute un rappel pour un événement onmouseup. D'après ce que je peux dire, un rappel pour cet événement est censé recevoir un objet MouseEvent. Est-ce exact? Si oui, que dois-je faire pour que cela se produise?
Ceci utilise MSHTML pour IE 6 sp2 (ou une version supérieure) sur Windows XP SP2.
La solution
Les arguments d'événements pour tous les événements DOM, y compris onmouseup
, sont stockés dans la propriété event
de la fenêtre parente ( IHTMLWindow2 :: event
)
Si la fenêtre parente n'est pas déjà mise en cache, IHTMLElement
possède une propriété document
qui renvoie une interface IHTMLDocument
. À partir de là, vous pouvez interroger IHTMLDocument2
, qui possède une propriété parentWindow
. Le code IHTMLWindow2
renvoyé a la propriété event
que vous recherchez. Vous devriez pouvoir interroger l'interface d'événement à partir de là.