文件夹选取


void CTestDlg::OnButton1()
{
 // 要求Windows 95/NT4 或更新版本
 ASSERT(LOBYTE(LOWORD(GetVersion())) >= 4);

 TCHAR szPath[_MAX_PATH];
 BROWSEINFO bi;
 // 指定父窗口,在对话框显示期间,父窗口将被禁用
 bi.hwndOwner = NULL;
 // 如果指定NULL,就以“桌面”为根
 bi.pidlRoot = NULL;
 // 这一行将显示在对话框的顶端
 bi.lpszTitle =  _T("请选择一个文件夹");
 bi.pszDisplayName = szPath;
 // 只返回文件系统中存在的文件夹
 bi.ulFlags = BIF_RETURNONLYFSDIRS;
 bi.lpfn = NULL; // 回调函数的指针
 bi.lParam = NULL; // 传向回调函数的参数

 // 现在,调用函数来显示对话框
 // 它总与Windows的外壳程序Explorer保持相同的外观
 LPITEMIDLIST pItemIDList = SHBrowseForFolder( &bi );

 if ( pItemIDList ) // 点按了“确定”按钮
 {
  TCHAR szPath[ _MAX_PATH ];
  if ( SHGetPathFromIDList(pItemIDList, szPath) )
  {
   // 成功地取得了文件夹信息
   CString strMessage;
   strMessage.Format("  %s", szPath);
   ShowFolder( strMessage );
  }
  // 防止内存泄露,要使用IMalloc接口
  IMalloc* pMalloc;
  if ( SHGetMalloc( &pMalloc ) != NOERROR )
  {
   // 未返回有效的IMalloc接口指针
   TRACE(_T("无法取得外壳程序的IMalloc接口/n"));
  }
  pMalloc->Free( pItemIDList );
  if ( pMalloc )
   pMalloc->Release();
 }
}

int CTestDlg::ShowFolder(CString &strPath)
{
 GetDlgItem(IDC_TEXT)->SetWindowText(strPath);
 return 0;
}

void CTestDlg::OnButHlep()
{
 // TODO: Add your control notification handler code here
 CAboutDlg dlg;
 dlg.DoModal();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值