Impossibile ottenere argomenti sugli eventi nel gestore eventi IHTMLElement
-
02-07-2019 - |
Domanda
Ho aggiunto un callback a un'istanza IHTMLElement ma quando viene chiamato IDispatch :: Invoke per l'evento, non ci sono mai argomenti (ad esempio pDispParams- > cArgs e pDispParams- > cNamedArgs sono sempre 0). Ad esempio, aggiungo un callback per un evento onmouseup. Da quello che posso dire, un callback per questo evento dovrebbe ricevere un oggetto MouseEvent. È corretto? In tal caso, cosa devo fare per garantire che ciò accada?
Questo utilizza MSHTML per IE 6 sp2 (o migliore) su Windows XP SP2.
Soluzione
Gli argomenti degli eventi per tutti gli eventi DOM incluso onmouseup
sono memorizzati nella proprietà event
della finestra principale ( IHTMLWindow2 :: event
)
Se la finestra principale non è già memorizzata nella cache, IHTMLElement
ha una proprietà document
che restituisce un'interfaccia IHTMLDocument
. Da questo è possibile eseguire una query per IHTMLDocument2
che ha una proprietà parentWindow
. Il IHTMLWindow2
che viene restituito ha la proprietà evento
che stai cercando. Da lì dovresti essere in grado di eseguire una query per l'interfaccia dell'evento.