VC打开一个目录选择对话框,并设置初始化目录

本文介绍如何使用SHBrowseForFolder函数实现目录选择对话框,并通过BROWSEINFO结构体及回调函数BrowserCallbackProc预设默认路径。

打开目录选择对话框可以使用SHBrowseForFolder函数来实现,

默认的路径是我的电脑,如果需要自己设置一个默认路径的话,则需要填充BROWSEINFO里面的回调函数

在这里使用BrowserCallbackProc,初始化的时候给目录选择对话框发消息,选中预先设定的路径.

////////////////////////////////////////////////////////////////////////// int CALLBACK BrowserCallbackProc ( HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData ) { switch ( uMsg ) { case BFFM_INITIALIZED: ::SendMessage(hWnd, BFFM_SETSELECTION, 1, (long)szInitPath); break; default: break; } return 0; } ////////////////////////////////////////////////////////////////////////// void CGetFileListDlgDlg::OnOK() { // TODO: Add extra validation here BROWSEINFO bi; TCHAR szSearch[MAX_PATH]; LPITEMIDLIST lpItemRoot; ZeroMemory(&bi, sizeof(bi)); // ZeroMemory(szInitPath, MAX_PATH); ZeroMemory(szSearch, MAX_PATH); bi.hwndOwner = m_hWnd; bi.pidlRoot = NULL; bi.pszDisplayName = szInitPath; bi.lpszTitle = TEXT("请选择你要枚举的目录:"); bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX; bi.lpfn = BrowserCallbackProc; lpItemRoot = SHBrowseForFolder(&bi); if (lpItemRoot) { SHGetPathFromIDList(lpItemRoot, szInitPath); GetFileList(szInitPath); } //CDialog::OnOK(); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值