2017-01-30 6 views
1

Ich bin neu in Namespace Extensions. Ich versuche, den Navigationsbereich für eine Namespace-Erweiterung zu deaktivieren.Wie bekomme ich GetFolder (IID_ExplorerPaneVisibility) Aufrufe

Ich habe meine Shell View-Implementierung IFolderView :: GetFolder, die ein IShellFolder-Objekt zurückgibt. Die Shell Folder-Klasse implementiert die IExplorerPaneVisibility :: GetPaneState-Methode.

Aber ich bekomme GetFolder (IID_ExplorerPaneVisibility) Anrufe nicht. Kann mir jemand dabei helfen?

STDMETHODIMP ShellFolderViewImpl::GetFolder(REFIID riid, VOID ** ppv) 
{ 
    if (riid == IID_IExplorerPaneVisibility) 
    { 
     this->QueryInterface(riid, (void**)ppv); 
    } 
    return S_OK; 
} 

STDMETHODIMP ShellFolderViewImpl::GetPaneState(REFEXPLORERPANE ep,EXPLORERPANESTATE * peps) 
{ 
    if (ep == EP_NavPane) 
     *peps = EPS_DEFAULT_OFF; 
    else if (ep == EP_Commands) 
     *peps = EPS_DEFAULT_OFF; 
    else if (ep == EP_DetailsPane) 
     *peps = EPS_DEFAULT_OFF; 
    else if (ep == EP_AdvQueryPane) 
     *peps = EPS_DEFAULT_OFF; 
    else if (ep == EP_QueryPane) 
     *peps = EPS_DEFAULT_OFF; 
    else 
     *peps = EPS_DONTCARE; 
    return S_OK; 
} 

Antwort

0

MSDN sagt

Die IExplorerPaneVisibility Implementierung von Shell Ordner abgerufen wird. Der Shell-Ordner wird wiederum aus der Ansicht abgerufen.

Ich interpretiere dies als; Es wird QueryInterface Ihren IShellFolder, um Ihre IExplorerPaneVisibility-Implementierung zu erhalten.

Sie sollten auch überprüfen, this newsgroup thread, zeigt es einige Problemumgehungen, die Sie möglicherweise deaktivieren müssen einige der Fenster.

Ich hoffe, dass Ihr Code hier nicht Ihre eigentliche Implementierung ist, sollten Sie niemals S_OK in GetFolder für Dinge zurückgeben, die Sie nicht erkennen!