none
WindwsVista カラムヘッダーの選択メニューを非表示にする方法 RRS feed

  • 質問

  • WindowsVistaのシェル拡張のプログラムを作成しています。
    Explorerの新機能で、WindowsVistaから登場したカラムヘッダーを非表示にしたいと思っています。

    現状デフォルトの通り表示されます。
    シェル拡張にて、カラムヘッダーを非表示にするには、どのような制御が必要なのでしょうか?
    カラムヘッダーには、「ソート表示」「グループ表示」「フィルタリング表示」「スタック表示」の
    4種類があるようですが、「フィルタリング表示」と「スタック表示」を非表示にする方法が分かりません。

    厳密には、スタック表示は一部非表示にすることが出来ましたが、
    完全に非表示には出来ません。(Explorerから起動し、シェル拡張部分へ遷移すると表示されてしまう)

    これら、フィルタリング機能など、非表示にすることは可能でしょうか?

    もしくは、カラムヘッダーの機能自体を非表示にする方法はありますか?

        class CViewCallback : 
           public IFolderViewSettings
        {
        public:
            CViewCallback()
            {
            }
    
            BEGIN_COM_MAP(CViewCallback)
                COM_INTERFACE_ENTRY(IFolderViewSettings)
            END_COM_MAP()
          ・
          ・
          ・
          ・
          ・
        }
    --------------------------------------------------------
    
            // IFolderViewSettings
            IFACEMETHODIMP GetColumnPropertyList(__in REFIID riid, __deref_out_opt void **ppv)
            {
                *ppv = NULL;
                return E_NOTIMPL;
            }
            
            IFACEMETHODIMP GetGroupByProperty(__out PROPERTYKEY *pkey, __out BOOL *pfGroupAscending)
            {
                return E_NOTIMPL;
            }
    
            IFACEMETHODIMP GetViewMode(__out FOLDERLOGICALVIEWMODE *plvm)
            {
                *plvm = _prf->IsRoot() ? FLVM_TILES : FLVM_DETAILS;
                return S_OK;
            }
    
            IFACEMETHODIMP GetIconSize(__out UINT *puIconSize)
            {
                return E_NOTIMPL;
            }
            
            IFACEMETHODIMP GetFolderFlags(__out FOLDERFLAGS *pfolderMask, __out FOLDERFLAGS *pfolderFlags)
            { 
                // do a deep search when word wheeling
                // for some unknown reason this does not work, debug this later
                *pfolderMask = (FOLDERFLAGS)0; 
                *pfolderFlags = (FOLDERFLAGS)0;
                return S_OK; // ここでスタック表示を非表示化;
            }
    
            IFACEMETHODIMP GetSortColumns(__out_ecount_part(cColumnsIn, *pcColumnsOut) SORTCOLUMN *rgSortColumns, UINT cColumnsIn, __out UINT *pcColumnsOut)
            {
                return E_NOTIMPL;
            }
            
            IFACEMETHODIMP GetGroupSubsetCount(__out UINT *pcVisibleRows)
            {
                return E_NOTIMPL;
            }
    
    


    • 編集済み KFu 2009年7月6日 3:03
    2009年7月6日 2:35

回答



  •         IFACEMETHODIMP GetFolderFlags(__out FOLDERFLAGS *pfolderMask, __out FOLDERFLAGS *pfolderFlags)
            { 
                // do a deep search when word wheeling
                // for some unknown reason this does not work, debug this later
                *pfolderMask = (FOLDERFLAGS)0; 
                *pfolderFlags = (FOLDERFLAGS)0;
                return S_OK; // ここでスタック表示を非表示化;
            }
    
    


              *pfolderMask = (FOLDERFLAGS)(FWF_NO_FILTERS|FWF_NOBROWSERVIEWSTATE); 
              *pfolderFlags = (FOLDERFLAGS)(FWF_NO_FILTERS|FWF_NOBROWSERVIEWSTATE);
    とすると、行けます。FWF_NOBROWSERVIEWSTATEはなぜか必要でした。



      
    • 回答としてマーク sk7474 2009年7月31日 9:12
    2009年7月17日 7:45

すべての返信



  •         IFACEMETHODIMP GetFolderFlags(__out FOLDERFLAGS *pfolderMask, __out FOLDERFLAGS *pfolderFlags)
            { 
                // do a deep search when word wheeling
                // for some unknown reason this does not work, debug this later
                *pfolderMask = (FOLDERFLAGS)0; 
                *pfolderFlags = (FOLDERFLAGS)0;
                return S_OK; // ここでスタック表示を非表示化;
            }
    
    


              *pfolderMask = (FOLDERFLAGS)(FWF_NO_FILTERS|FWF_NOBROWSERVIEWSTATE); 
              *pfolderFlags = (FOLDERFLAGS)(FWF_NO_FILTERS|FWF_NOBROWSERVIEWSTATE);
    とすると、行けます。FWF_NOBROWSERVIEWSTATEはなぜか必要でした。



      
    • 回答としてマーク sk7474 2009年7月31日 9:12
    2009年7月17日 7:45
  • こんにちは。中川俊輔です。

    anobuさん、回答ありがとうございます。

    KFuさん、フォーラムのご利用ありがとうございます。
    その後いかがでしょうか?問題は解決しましたか?
    有用な情報と思われたため、anobuさんの回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくお願いします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年7月31日 9:13