私はWebブラウザコントロールをホストしており、自分のコンテキストメニューを提供したいと考えています。ホストされたWebブラウザコントロールにカスタムコンテキストメニューを追加
理想的には、元のブラウザのコンテキストメニュー(すべてのアドインなど)をサブメニューとして含む独自のコンテキストメニューを提示したいと考えています。
これは可能ではない/難しい場合は、通常はコンテキストメニューを表示し、ユーザがSHIFTを押すと元のコンテキストメニューを表示します。
IDocHostUIHandlerを実装する必要がありますか?はいの場合は、どのようにカスタムコンテキストメニューを指定すればいいですか?どのように元のコンテキストメニューを強制できますか?実装を使用するためのコントロールを取得するにはどうすればよいですか?
制御は、(誤り、省略ハンドリング)として作成されます。
HRESULT hr=AtlAxCreateControlEx(
L"Shell.Explorer",m_wndWebCtrl.m_hWnd,
NULL,NULL,(IUnknown**)&unk,
IID_IWebBrowser2, NULL); // (IPersistStreamInit*)this);
hr = AtlAdviseSinkMap(this, true);
IUnknownPtr unk;
AtlAxGetControl(m_wndWebCtrl.m_hWnd, &unk);
IWebBrowser2Ptr browser2 = unk;
ありがとうございました:)私はちょうどデフォルトの機能から完全にユーザーを切り離したくないので、GetKeyboardStateがそのトリックをすると思います。クライアントサイトの実装でIDocHostUIHandlerを使用するようにATLに指示する方法も知っていますか? – peterchen
私は恐れているとは言えません...自分でATLを使ってみたことはありません。多分これが助けになるでしょうか? http://support.microsoft.com/kb/274202 – Shog9