2008-09-21 22 views
3

J'ai ajouté un rappel à une instance IHTMLElement mais lorsque IDispatch :: Invoke est appelé pour l'événement, il n'y a jamais d'arguments (ie pDispParams-> cArgs et pDispParams-> cNamedArgs sont toujours 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?Ne pas obtenir d'arguments d'événement dans le gestionnaire d'événements IHTMLElement

Cela utilise le MSHTML pour IE 6 SP2 (ou mieux) sur Windows XP SP2.

Répondre

6

arguments des événements pour tous les événements DOM dont onmouseup sont stockés dans la propriété de fenêtre parent event (IHTMLWindow2::event)

Si vous ne l'avez pas déjà le cache de fenêtre parent, IHTMLElement possède une propriété document qui retourne une interface IHTMLDocument. De cela, vous pouvez demander IHTMLDocument2 qui a une propriété parentWindow. Le IHTMLWindow2 retourné a la propriété event que vous cherchez. Vous devriez pouvoir interroger l'interface de l'événement à partir de là.