IExplorerbrowser IFolderview2 创建文件夹 post 通知

IExplorerbrowser IFolderview2 create folder post notification

我有一个 MFC 应用程序,它使用 IExplorerBrowser 接口在我的应用程序中实现 windows shell。在此应用程序中,我有一个按钮,用户可以单击该按钮并在资源管理器的 shell 视图中创建一个文件夹。创建文件夹后,应用程序应允许用户重命名文件夹。换句话说,我希望它的工作方式与用户在 Windows 资源管理器中创建文件夹的方式完全相同。我使用 IFileOperations 接口的 NewItem 方法来创建文件夹。这是我在我的应用程序中创建文件夹的确切代码

HRESULT CreateFolder( __in IShellItem *pDestinationFolder, PCWSTR pszNewName )
{
HRESULT hr = CoInitializeEx( NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE );
if ( SUCCEEDED( hr ) )
{
    CComPtr<IFileOperation> pFileOperation;
    hr = CoCreateInstance( CLSID_FileOperation,
        NULL,
        CLSCTX_ALL,
        IID_PPV_ARGS( &pFileOperation ) );
    if ( SUCCEEDED( hr ) )
    {
        hr = pFileOperation->SetOperationFlags( FOF_NO_UI );
        if ( SUCCEEDED( hr ) )
        {
            hr = pFileOperation->NewItem( pDestinationFolder, FILE_ATTRIBUTE_DIRECTORY, pszNewName, NULL, NULL );
            if ( SUCCEEDED( hr ) )
            {
                hr = pFileOperation->PerformOperations();
            }
        }


    }
}
CoUninitialize();
return hr;
}

调用 CreateFolder(...) 后,我使用 IFolderView2 接口的 SelectItem 方法将文件夹设置为 select 模式。这是将文件夹置于编辑模式的代码:

HRESULT hr = m_pIExplorerBrowser->GetCurrentView( IID_PPV_ARGS( pFolderView2 ) );
if( SUCCEEDED( hr ) )
pFolderView2->SelectItem( nLastCreatedFolderIndex, SVSI_EDIT );

问题是 CreateFolder 比我的 SelectItem 方法调用完成得晚。我一直在寻找一个事件,它会告诉我视图何时被 CreateFolder 更新,以便我可以在那之后发送我的 SelectItem 方法。

如能就此问题提供任何帮助,我们将不胜感激。

我终于找到了问题的答案。它已经被问到关于 Whosebug 的另一个问题。 What is the "Shell Namespace" way to create a new folder?