CFileDialog获取文件与文件夹路径

1. 文件路径

CFileDialog dlg(TRUE,L"avi",NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,L"(*.avi;*.mp4;*.wmv;*.asm)|*.avi;*.mp4;*.wmv;*.asm||");
if (dlg.DoModal() == IDOK)
{
    CString str_path = dlg.GetPathName();
    ((CEdit*)GetDlgItem(IDC_EDIT1))->SetWindowTextW(str_path);
}

 

2. 文件夹路径

static int CALLBACK BrowseCallbackProc(HWND hWnd,UINT uMsg,LPARAM,LPARAM lpData)
{
	if (uMsg == BFFM_INITIALIZED)
	{
		CTreeCtrl	treePath;
		HTREEITEM	hItemSel;
		::SendMessage(hWnd,BFFM_SETSELECTION,TRUE,lpData);
		treePath.SubclassWindow(::GetDlgItem(hWnd,0x3741));
		hItemSel = treePath.GetSelectedItem();
		treePath.Expand(hItemSel,TVE_COLLAPSE);
		treePath.UnsubclassWindow();
	}
	return 0;
}

void main()
{
    BROWSEINFO   bi;
    TCHAR  szPath[MAX_PATH] = L"C:\\job";   //默认路径
    LPITEMIDLIST   pList = NULL;
    //ZeroMemory(szPath,MAX_PATH);

    //获取当前路径
    //GetDlgItemText(uid,szPath,MAX_PATH);
    // 配置路径对话框
    memset(&bi,sizeof(BROWSEINFO));

    bi.hwndOwner = m_hWnd;
    bi.pidlRoot = pList;
    bi.pszDisplayName = szPath;

    bi.lpszTitle = L"选择路径";
    bi.ulFlags = BIF_EDITBOX;
    bi.lpfn = BrowseCallbackProc;
    bi.lParam = (LPARAM)szPath;
    bi.iImage = 0;

    //弹出选择目录对话框 
    if ((pList = SHBrowseForFolder(&bi)) != NULL)
    {
        if (SHGetPathFromIDList(pList,szPath))
        {
            ((CEdit*)GetDlgItem(IDC_EDIT1))->SetWindowTextW(szPath);
        }
    }
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐