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

常见的选中文件方法使用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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值