سؤال

أنا خلق أي تمديد (باستخدام VS2008, C++) الذي يحتاج إلى تتفاعل الأحداث التمرير في IE.أنا باستخدام BHO أن لدي الوصول إلى IWebBrowser2 العنصر ، IHTMLDocument2 عنصر HWND الإطار الأصل.أنا لا يمكن معرفة كيفية الوصول إلى التمرير.لقد رأيت الرموز التي تسمح لي أن التعامل مع التمرير مرة واحدة لدي الوصول إليها ، ولكن ليس كيفية الحصول على شريط التمرير الكائنات (أو هم نافذة الطفل من أي نافذة؟) أنفسهم.أي أفكار ؟

هل كانت مفيدة؟

المحلول 3

هذا الموضوع عن إجابة. وقد وصفت مشكلتي والإجابة الصحيحة بشكل صحيح هنا.

نصائح أخرى

MSHTML يجعل الخاصة التمرير بدلا من استخدام النظام الأصلي الضوابط.هذا هو السبب يمكنك تطبيق قواعد CSS لهم.

ما أود أن محاولة هي:

  1. QueryInterface() في IHTMLDocument2 كائن IHTMLElement.
  2. QueryInterface() أن IConnectionPointContainer.
  3. ثم اتصل IConnectionPointContainer::FindConnectionPoint(DIID_HTMLElementEvents2).
  4. تطبيق IDispatch::Invoke () ، يجب أن تحصل على OnScroll الحدث عندما يقوم شخص ما مخطوطات الوثيقة.
  5. شطف وتكرار دون إطارات.

وبما أنني IDispatchImpl تنفيذها بالفعل، وأنا على التخمين وأود أن تجاوز تنفيذ ATL من IDispatch و:: استدعاء أسلوب للتعامل مع الأحداث. هل هذا صحيح؟ إذا كان هذا هو الحال ولدي مقالات بالوعة مع DIID_DWebBrowserEvents2، وكيف أن تتأثر؟ وهنا كيف صفي تبدو مثل:

class ATL_NO_VTABLE CHelloWorldBHO :
    public CComObjectRootEx<CComSingleThreadModel>,
    public CComCoClass<CHelloWorldBHO, &CLSID_HelloWorldBHO>,
    public IObjectWithSiteImpl<CHelloWorldBHO>,
    public IDispatchImpl<IHelloWorldBHO, &IID_IHelloWorldBHO, &LIBID_HelloWorldLib, /*wMajor =*/ 1, /*wMinor =*/ 0>,
    public IDispEventImpl<1, CHelloWorldBHO, &DIID_DWebBrowserEvents2, &LIBID_SHDocVw, 1, 1>
{
.
.
.
BEGIN_SINK_MAP(CHelloWorldBHO)
     SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_DOCUMENTCOMPLETE, OnDocumentComplete)
     SINK_ENTRY_EX(1, DIID_DWebBrowserEvents2, DISPID_BEFORENAVIGATE2, BeforeNavigate2)//Handle BeforeNavigate2
END_SINK_MAP()
.
.
.
}

والشكر

وتحرير: اكتشفت أنه عندما يتم استدعاء الكتابة، ويسمى OnDOcumentCOmplete أبدا. كيف يمكنني الحصول على حول هذا؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top