妥善处理好代码书写过程中关于路径中分隔符“/”的方方面面
2009-11-11 08:40
423 查看
妥善处理好代码书写过程中关于路径中分隔符“/”的方方面面
一、GetCurrentDirectory得到当前目录,并生成心意的全路径
char chCurPath[MAX_PATH] = {0};
::GetCurrentDirectory(MAX_PATH, (LPTSTR)chCurPath);
注意:如果获取的路径是根目录的话,例:C:/ ,D:/ ,A:/ ,那么我们在生成全路径时,不用加“//”转意
如果获取的是其它路径,例:C:/WINDOWS , C:/MyFolder ,那么我们在生成全路径时,必须注意加上转意符“//”
二、《浏览计算机》 对话框获取的全路径,同样适用于上述描述,实际使用时一定要注意“//”,应给予特殊处理
BROWSEINFO bi; //BROWSEINFO 结构,包含有用户选中目录的重要信息
TCHAR Buffer[512] = {0};
TCHAR FullPath[512] = {0};
bi.hwndOwner = m_hWnd; //m_hWnd程序主窗口句柄
bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer; //用户选择的存储路径的缓冲区
bi.lpszTitle = "请选择数据文件存储的路径"; //《浏览计算机》对话框的文字提示
bi.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_BROWSEFORCOMPUTER ; //只返回目录。其他标志看MSDN
bi.lpfn = NULL; //回调函数,有时很有用
bi.lParam = 0;
bi.iImage = 0;
ITEMIDLIST * pidl = ::SHBrowseForFolder(&bi); //显示弹出窗口,ITEMIDLIST很重要
if( ::SHGetPathFromIDList (pidl, FullPath) ) //在ITEMIDLIST中得到目录名的全路径
{
//FullPath就是你选择的全路径
}
else
{
//没有获取到任何路径
}
注意:我目前的办法是如果,获取的全路径字符数 > 3,应在路径后面加上转意符“//”再形成自己可心意的全路径
三、GetModuleFileName 得到当前模块的运行目录,也要注意上述问题
char chRunPath[MAX_PATH] = "/0";
GetModuleFileName(NULL, chRunPath, _MAX_DIR);
一、GetCurrentDirectory得到当前目录,并生成心意的全路径
char chCurPath[MAX_PATH] = {0};
::GetCurrentDirectory(MAX_PATH, (LPTSTR)chCurPath);
注意:如果获取的路径是根目录的话,例:C:/ ,D:/ ,A:/ ,那么我们在生成全路径时,不用加“//”转意
如果获取的是其它路径,例:C:/WINDOWS , C:/MyFolder ,那么我们在生成全路径时,必须注意加上转意符“//”
二、《浏览计算机》 对话框获取的全路径,同样适用于上述描述,实际使用时一定要注意“//”,应给予特殊处理
BROWSEINFO bi; //BROWSEINFO 结构,包含有用户选中目录的重要信息
TCHAR Buffer[512] = {0};
TCHAR FullPath[512] = {0};
bi.hwndOwner = m_hWnd; //m_hWnd程序主窗口句柄
bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer; //用户选择的存储路径的缓冲区
bi.lpszTitle = "请选择数据文件存储的路径"; //《浏览计算机》对话框的文字提示
bi.ulFlags = BIF_RETURNONLYFSDIRS|BIF_EDITBOX|BIF_BROWSEFORCOMPUTER ; //只返回目录。其他标志看MSDN
bi.lpfn = NULL; //回调函数,有时很有用
bi.lParam = 0;
bi.iImage = 0;
ITEMIDLIST * pidl = ::SHBrowseForFolder(&bi); //显示弹出窗口,ITEMIDLIST很重要
if( ::SHGetPathFromIDList (pidl, FullPath) ) //在ITEMIDLIST中得到目录名的全路径
{
//FullPath就是你选择的全路径
}
else
{
//没有获取到任何路径
}
注意:我目前的办法是如果,获取的全路径字符数 > 3,应在路径后面加上转意符“//”再形成自己可心意的全路径
三、GetModuleFileName 得到当前模块的运行目录,也要注意上述问题
char chRunPath[MAX_PATH] = "/0";
GetModuleFileName(NULL, chRunPath, _MAX_DIR);
相关文章推荐
- RCP里关于Workspace和文件路径的代码(转帖)
- 在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)
- SD--关于定价过程中的存储顺序的参考结构和参考字段的使用代码跟踪
- 关于打印过程中强制移除打印机的处理
- 【编程题目】数值的整数次方——关于代码完整性及错误处理方式的探讨(C++实现)
- Openvswitch原理与代码分析(4):网络包的处理过程
- 关于SQLSERVER 事物的运用(3)嵌套事物以及嵌套存储过程的异常的处理
- 从代码看 asp.net 处理过程
- .NET 查找程序集路径(CLR关于Assembly的搜索路径的过程) .
- 关于路径和文件名的处理
- 代码书写过程中的一些需要培养的好习惯(持续更新)
- live555代码解读之二:DESCRIBE请求消息处理过程
- 关于vue单文件中引用路径的处理方法
- 关于 flash (jw player)不能处理 flv视频 中文名文件 或者 中文路径 的 解决方案
- 关于一次性处理一串基本 加、减、乘、除 运算 的代码
- [swift3.0]关于ios 忽略文件 和 提交代码总是提交一些不必要的文件处理
- 关于导入SVN的项目到Android studio中路径包含中文报错处理
- 关于ruby和GT,个人感觉ruby是GT的翻版,看不出所谓的精简优势。同时感觉ruby和GT代码编写过程很缺乏逻辑性。
- 关于DLL中的哪段代码被执行的处理方法
- 在存储过程中编写正确的事务处理代码(SQL Server 2000 & 2005)