关闭

MFC(VC)中实现一次选中多个文件(夹) 转载

标签: 选中文件不创建新exploermfc
669人阅读 评论(0) 收藏 举报
分类:

常见的选中文件方法使用explorer.exe +"select,C:\\1.txt" 选中文件。但是,多次选择会创建多个explorer进程,打开多个窗口(即使是同级目录)。

使用SHOpenFolderAndSelectItems可以使用默认的explorer完成该操作;且多次打开同一目录选中文件,只会显示一个文件夹窗口。代码如下

void CSelectItemDlg::OnBnClickedButton1()//一个按钮响应函数
{
// TODO: 在此添加控件通知处理程序代码
LPSHELLFOLDER pDesktopFolder;
if(SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
{
LPITEMIDLIST      pIDList;
LPITEMIDLIST      pidl[2];
ULONG             chEaten;
ULONG             dwAttributes;
HRESULT           hr;
TCHAR* m_strFilePath = _T("D:\\MTV\\1.mkv");
hr = pDesktopFolder->ParseDisplayName(
NULL, NULL, m_strFilePath, &chEaten, &pidl[0], &dwAttributes);
//设置第二个要选中的东西
m_strFilePath = _T("D:\\MTV\\2.mkv");
hr = pDesktopFolder->ParseDisplayName(NULL,
NULL,
m_strFilePath,
&chEaten,
&pidl[1],
&dwAttributes);
m_strFilePath = _T("D:\\MTV");
hr = pDesktopFolder->ParseDisplayName(NULL,
NULL,
m_strFilePath,
&chEaten,
&pIDList,
&dwAttributes);
if (FAILED(hr))
{
pDesktopFolder->Release();
return ;
}
CoInitialize(NULL);
SHOpenFolderAndSelectItems(pIDList, 2, (LPCITEMIDLIST *)pidl, 0);
}
}


原网址: http://hi.baidu.com/wangxu198709/item/f585e0db9b5be33de2108f60



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3030次
    • 积分:48
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章分类