Ich habe ein kleines Problem mit meiner Anwendung mit MSHTML. Ich habe alles außer dem seltsamen Tastenanschlag fehlendes Verhalten beim Tippen schnell wie in der Betreffzeile erwähnt. Ich denke, dass es vielleicht mit der Methode zu tun hat, mit der ich die Ereignisse versenke? Die Details: Meine Anwendung ist ein separates Programm in C++ und MFC in Visual Studio 2005 geschrieben. Das Programm wird an eine derzeit ausgeführte (unabhängige) Instanz von Internet Explorer angefügt und ruft den Zeiger auf IWebBrowser2
Schnittstelle und übergibt es an ein Objekt vom Typ CCmdTarget
:MSHTML IWebBrowser2 - Sinkende Seitenereignisse verursachen verpasste Tastenanschläge?
class CHandler : public CCmdTarget
{
IWebBrowser2* m_pWebBrowser2;
DWORD m_dwBrowserCookie;
…
DECLARE_DISPATCH_MAP()
};
Diese Klasse verfolgt, was im Browser geschieht. Ich sinke die Browser-Ereignisse mit dem folgenden Befehl:
LPUNKNOWN pUnkSink = GetIDispatch(FALSE);
retval = AfxConnectionAdvise((LPUNKNOWN)m_pWebBrowser2, DIID_DWebBrowserEvents2, pUnkSink, FALSE, &m_dwBrowserCookie);
Wenn ich die AfxConnectionAdvise
kommentieren, dann werden keine Tastatureingaben verpasst, aber nicht mehr Ereignisse. Wenn ich es verlasse, versenke ich die Ereignisse, vermisse aber den gelegentlichen Tastendruck, wenn ich schnell tippe.
Ich weiß, es gibt eine Reihe von Möglichkeiten der Verbindung zu den Ereignissen (AtlAdvise
, Verbindungspunkte), aber das war das einzige, das ich arbeiten konnte.
Alle Vorschläge wären großartig!
Ich glaube nicht, dass das OP Tastenanschläge will; Ich denke, sie wollen Webbrowser-Ereignisse und möchten nur Tastenanschläge funktionieren, ohne Zeichen zu verlieren. –
Das stimmt, ich bin nicht wirklich an den Tastenanschlägen interessiert. Aber wenn man schnell tippt, werden einige fallengelassen, was als Benutzer nervt. Ich bin mir ziemlich sicher, dass es wegen der Art und Weise ist, wie ich die Ereignisse versenke, weil es das Problem nicht behebt. – Brian