有关对话框目录的函数及代码

①、目录选择对话框:

TCHAR szPath[MAX_PATH] = {0};
BROWSEINFO mBroInfo = {0};
mBroInfo.hwndOwner = m_hWnd;
ITEMIDLIST *pidl = SHBrowseForFolder(&mBroInfo);
if (SHGetPathFromIDList(pidl, szPath)){
 SetDlgItemText(IDC_PATH_EDIT, szPath);
}
CoTaskMemFree(pidl);

#####################################################

②、目录选择对话框的初始化选择路径:
mBroInfo.lpfn = BrowseCallbackProc;

int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
 if(uMsg == BFFM_INITIALIZED){
  ::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)_T("D:\\Program Files\\SoftWare"));
 }
 return 0;
}

#####################################################

③、目录选择对话框的根目录设定:
LPITEMIDLIST GetItemIDListFromPath(CString strPath)
{
 if (strPath.IsEmpty())
  return NULL;

 LPSHELLFOLDER pDesktopFolder = NULL;
 HRESULT hr = SHGetDesktopFolder(&pDesktopFolder);
 if (FAILED(hr))
  return NULL;

 PWCHAR pWchar = NULL;
#ifdef _UNICODE
 pWchar = (LPTSTR)(LPCTSTR)strPath;
#else
 USES_CONVERSION;
 pWchar = A2W(strPath);
#endif

 LPITEMIDLIST pItemIDList = NULL;
 hr = pDesktopFolder->ParseDisplayName(NULL, NULL, pWchar, NULL, &pItemIDList, NULL);
 pDesktopFolder->Release();
 if ( FAILED(hr))
  return NULL;

 return pItemIDList;
}

#####################################################
④、让对话框程序支持拖拽
1> 对话框模版的 Accept Files 属性设置成 True;
2> 响应主对话框类的 WM_DROPFILES 消息;
3> 添加如下示例代码:

TCHAR szPath[MAX_PATH] = {0};
UINT nCount = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
for(UINT idx = 0; idx < nCount; ++idx) {
 DragQueryFile(hDropInfo, idx, szPath, MAX_PATH);
 MessageBox(szPath);
}
DragFinish(hDropInfo);
------------------------------------- End -------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值