2009-07-28 169 views
2

我的一個應用程序具有Windows資源管理器,如文件列表控件。當用戶右鍵單擊文件時,我可以成功顯示資源管理器上下文菜單(帶有一些我自己的額外選項)。但是,如果用戶右鍵單擊列表控件本身(未選擇任何項目),則無法顯示「正確」的上下文菜單。我想在右側的Windows資源管理器中顯示一個,而不是在左側的樹中。右側資源管理器上下文菜單(IID_IContextMenu?)

我試過一堆在GetUIObjectOf調用中的變體,我衝浪谷歌網等,但我還沒有找到解決方案。任何幫助?

+0

這是一個非常棘手的問題。我懷疑有人會知道答案:-) – 2009-07-28 13:42:37

回答

2

調用IShellFolder :: CreateViewObject()爲文件夾本身獲取IContextMenu。 IShellFolder :: GetUIObjectOf()用於檢索文件夾內單個項目的界面,而不是文件夾本身。這是MSDN的文檔中所述:

IShellFolder::CreateViewObject Method

這種方法也用於請求 對象暴露的幾個 可選接口之一,包括 IContextMenu或IExtractIcon。在此 上下文中,CreateViewObject類似地使用 到 IShellFolder :: GetUIObjectOf。但是, 您調用IShellFolder :: GetUIObjectOf 請求一個文件夾包含的 項目之一的對象。致電 IShellFolder :: CreateViewObject到 請求文件夾 本身的對象。

+0

非常感謝。奇蹟般有效 :-) – 2009-07-31 13:27:56

0

發表雷米勒博的解決方案可能是要走的路,但如果你沒有使用所有的殼對象或希望更加個性化的菜單,你會看在HKCR \目錄\背景的列表實現IContextMenu的GUID,其餘的菜單項,你必須自己添加。

相關問題