IE浏览器IFolderview2创建文件夹发布通知
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方法将文件夹置于选择模式。以下是将文件夹置于编辑模式的代码:
HRESULT hr = m_pIExplorerBrowser->GetCurrentView( IID_PPV_ARGS( pFolderView2 ) );
if( SUCCEEDED( hr ) )
pFolderView2->SelectItem( nLastCreatedFolderIndex, SVSI_EDIT );
问题是CreateFolder的完成时间晚于我的SelectItem方法调用。我一直在寻找一个事件,当CreateFolder更新视图时,它会告诉我,这样我就可以在那之后发送我的SelectItem方法。
如果能在这个问题上提供任何帮助,我们将不胜感激。
我终于找到了问题的答案。这已经被作为另一个关于斯塔克夫流的问题提出了。什么是";Shell命名空间";创建新文件夹的方法?
相关文章:
- 函数如何通知用户它基于函数原型抛出异常?
- 如何在ECS框架中更新组件数据和通知系统
- 当 I2C 值在C++中发生变化时收到通知
- 如何设计具有不同类型的通知和观察器的观察者模式?
- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- 是否有必要获取锁并在不需要唤醒线程时通知condition_variable?
- 如何在点击通知时捕获用户的点击操作
- 在通知提升间处理条件变量时未按住锁会导致问题
- 通知条件变量后使用互斥锁
- 如何在不设置值的情况下通知 c++ 未来?
- 使用 ISdigit 通知任何检测到的非法字符
- Qt:如何通知对象已建立涉及它的信号槽连接
- 提升进程间named_condition_any不通知
- Windows Toast 通知不适用于 MS CPP 示例代码
- C++ Poco - 如何创建通知队列的向量?
- 当通知迭代器参数初始化为空列表的开头时,list::insert 行为是什么?
- C++ Windows 通知:使用依赖模板名称
- C++ Poco - 如何向特定线程发送通知/消息?
- 通知 Windows 系统应用程序字体已被卸载/删除
- C++应用程序通知 C# 应用程序