我正在託管一個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;
謝謝Shog :)我只是不想完全切斷用戶的默認功能,所以我猜GetKeyboardState會做的。也碰巧知道我如何告訴ATL在其客戶端實現中使用我的IDocHostUIHandler? – peterchen 2009-07-08 18:28:52