عدم الحصول على وسيطات الحدث في معالج أحداث IHTMLlement
-
02-07-2019 - |
سؤال
لقد قمت بإضافة رد اتصال إلى مثيل IHTMLlement ولكن عندما يتم استدعاء IDispatch::Invocation للحدث، لا توجد أية وسيطات (على سبيل المثال.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
العقار الذي تبحث عنه.يجب أن تكون قادرًا على الاستعلام عن واجهة الحدث من هناك.