Не получать аргументы события в обработчике событий IHTMLElement
-
02-07-2019 - |
Вопрос
Я добавил обратный вызов к экземпляру IHTMLElement, но когда для события вызывается IDispatch::Invoke, аргументов никогда не бывает (т. е.pDispParams->cArgs и pDispParams->cNamedArgs всегда равны 0).Например, я добавляю обратный вызов для события onmouseup.Насколько я могу судить, обратный вызов для этого события должен получить объект MouseEvent.Это верно?Если да, то что мне нужно сделать, чтобы это произошло?
Здесь используется MSHTML для IE 6 SP2 (или более поздней версии) в Windows XP SP2.
Решение
Аргументы событий для всех событий DOM, включая onmouseup
хранятся в родительском окне event
свойство (IHTMLWindow2::event
)
Если родительское окно еще не кэшировано, IHTMLElement
имеет document
свойство, которое возвращает IHTMLDocument
интерфейс.Из этого вы можете запросить IHTMLDocument2
который имеет parentWindow
свойство.А IHTMLWindow2
который возвращается, имеет event
недвижимость, которую вы ищете.Отсюда вы сможете запросить интерфейс событий.