一个可以记住上一次的选择的选择目录的对话框的实现代码段
2011-01-21 20:09
1341 查看
//下面的代码将调出一个选择目录的对话框
BROWSEINFO bi;
char Buffer[MAX_PATH];
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer;
bi.lpszTitle = "Select drectory";
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_VALIDATE;
bi.iImage = 0;
//注册一个callback,来设定目录选择对话框的初始选择目录
//这里假设lastpath是用来记录初始选择目录的字串指针
//即打开选择目录对话框时,默认选择上一回选择的目录
if (lastpath != NULL) //该值可以存放于全局变量或存储于配置文件中
{
bi.lParam = lastpath; //传给callback的参数,即初始选择的目录路径
}
else
{
bi.lParam = NULL;
}
bi.lpfn = BrowseCallbackProc; //注册回调函数
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi); //显示目录选择对话框
if(pIDList)
{
SHGetPathFromIDList(pIDList, Buffer); //获取用户选择的目录
Global_Free(pIDList);//记得释放pIDList,这里函数名记不太清了,大伙可以查下MSDN
}
//回调函数的实现,主要响应两个消息
inline int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
lParam = lParam;
switch(uMsg)
{
case BFFM_INITIALIZED: //初始化时,选择我们记录的路径
{
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)lpData);
}
break;
case BFFM_SELCHANGED: //目录选择改变时,记录选择的目录
{
::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,lpData);
}
break;
}
return 0;
}
BROWSEINFO bi;
char Buffer[MAX_PATH];
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer;
bi.lpszTitle = "Select drectory";
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE | BIF_VALIDATE;
bi.iImage = 0;
//注册一个callback,来设定目录选择对话框的初始选择目录
//这里假设lastpath是用来记录初始选择目录的字串指针
//即打开选择目录对话框时,默认选择上一回选择的目录
if (lastpath != NULL) //该值可以存放于全局变量或存储于配置文件中
{
bi.lParam = lastpath; //传给callback的参数,即初始选择的目录路径
}
else
{
bi.lParam = NULL;
}
bi.lpfn = BrowseCallbackProc; //注册回调函数
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi); //显示目录选择对话框
if(pIDList)
{
SHGetPathFromIDList(pIDList, Buffer); //获取用户选择的目录
Global_Free(pIDList);//记得释放pIDList,这里函数名记不太清了,大伙可以查下MSDN
}
//回调函数的实现,主要响应两个消息
inline int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
lParam = lParam;
switch(uMsg)
{
case BFFM_INITIALIZED: //初始化时,选择我们记录的路径
{
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)lpData);
}
break;
case BFFM_SELCHANGED: //目录选择改变时,记录选择的目录
{
::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,lpData);
}
break;
}
return 0;
}
相关文章推荐
- 怎么显示一个可以选择目录的打开对话框
- 基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
- JS+ACTIVEX实现网页选择本地目录路径对话框
- implementors一个eclipse面向接口编程的非常有用的插件:可以直接跳到接口的实现代码
- 简单完整的代码,通过这个代码你将对RSA加密算法在Java中的实现方法有一个初步的了解,这个类,你可以直接使用,水平高的,就自己修改完善下代码。
- 一个可以兼容IE FF的加为首页与加入收藏实现代码
- nc7下某个用户某个节点有多个模板,可以通过代码实现通过选择不同的业务流程来调用不同的模板吗?
- javascript显示选择目录对话框的代码
- C语言实现一个Window控制台带彩色,且可以用方向键选择并确认的菜单式列表(二) ---学生信息管理系统
- VC实现在浏览目录对话框中选择目录
- [代码]包括所有特性的目录选择对话框
- 用java实现验证码的生成,以下代码是一个controller,可以直接使用!
- 编写代码实现删除一个字符串中连续出现超过一次的空格
- 使用IO技术,创建一个目录,然后复制一个文件到该目录!实现复制的功能。(在博客园上传的第一份代码)
- 关于实现多个button只实现可以选中一个的代码
- C语言实现一个Window控制台带彩色,且可以用方向键选择并确认的菜单式列表(一)
- java代码--请设计一个方法,可以实现任意范围内的随机数
- jquery或者js实现两个下拉列表框只可以选择其中一个
- WPF下OpenFileDialog实现同一个对话框里打开文件或文件目录