私はMSHTMLを使ってアプリケーションに少し問題があります。私は、奇妙なキーストロークを除いて、すべての作業は、件名に記載されているように速く入力するときに欠けている。私はそれが私がイベントをシンクするために使用する方法と関係があるかもしれないと思う?MSHTML IWebBrowser2 - ページイベントが沈んだ場合、キーストロークが逃した?
詳細:私のアプリケーションは、Visual Studio 2005のC++とMFCで書かれた別のプログラムです。プログラムは現在実行中の(独立した)Internet Explorerインスタンスに接続し、IWebBrowser2
インターフェイスへのポインタを取得し、タイプCCmdTarget
のオブジェクト:
class CHandler : public CCmdTarget
{
IWebBrowser2* m_pWebBrowser2;
DWORD m_dwBrowserCookie;
…
DECLARE_DISPATCH_MAP()
};
このクラスは、ブラウザで何が起こっているかを追跡します。私はAfxConnectionAdvise
をコメントアウトした場合
LPUNKNOWN pUnkSink = GetIDispatch(FALSE);
retval = AfxConnectionAdvise((LPUNKNOWN)m_pWebBrowser2, DIID_DWebBrowserEvents2, pUnkSink, FALSE, &m_dwBrowserCookie);
は、その後、何のキーストロークが失われていないが、これ以上のイベント:私は、次のコマンドでブラウザのイベントをシンク。私がそれを残すと、私はイベントをシンクしますが、速く入力すれば時折キーストロークを逃します。
イベントに接続する方法はいくつかありますが(AtlAdvise
、接続ポイント)、これは私が働くことができる唯一のものでした。
どのような提案も素晴らしいでしょう。
私はOPがキーストロークを望んでいるとは思わない。私は彼らがウェブブラウザのイベントを望んでいると思うし、文字を落とさずにキーストロークを動作させたいと思う。 –
それは正しいです、私は本当にキーストロークに興味がありません。しかし、速く入力すると、ユーザーとして迷惑ないくつか落ちる。私はそれが沈んでも問題を解決しないので、私がイベントをシンクする方法のためだとかなり確信しています。 – Brian