《windows 程序设计》第九章 一个迷惑解答
来源:互联网 发布:递归算法自然数排列 编辑:程序博客网 时间:2024/05/29 17:25
终于把《windows 程序设计》看了三百多页(三分之一),在看《windows 程序设计》第九章时, HEAD程序代码中有个疑问,具体问题如下:
代码为:
szBuffer [lstrlen (szBuffer) - 1] = '/0' ;
// If setting the directory doesn't work, maybe it's
// a drive change, so try that.
if (!SetCurrentDirectory (szBuffer + 1))
{
szBuffer [3] = ':' ;
szBuffer [4] = '/0' ;
SetCurrentDirectory (szBuffer + 2) ;
}
....(省略代码)
这个szBuffer+1 是什么意思? szBuffer[3], szBuffer[4]为什么这么设置?
解答:
这是LB_DIR影响的结果造成的。
1.如果是文件,列表中的一项就显示为文件名;
2.如果不是文件,就可能为文件夹或者驱动盘。
本文探讨的是属于第二种情况,即为不是文件。szBuffer列表一项的字符串,它有3种可能:
[..] //上一层目录
[foldername] //文件夹名称,如[world],一个名为world的文件夹
[-driver-] //驱动盘名称,如[-c-],c盘
举个例子:
如果你选中的是一个叫world的文件夹,则szBuffer内容为[world],通过 szBuffer [lstrlen (szBuffer) - 1] = '/0' ; 得到[world/0
if (!SetCurrentDirectory (szBuffer + 1)) 是判断当前目录是否为文件夹。从szBuffer+1开始后面的字符串为路径,即为world/0。
把world设置为当前文件夹,设置成功,判断不成立。跳到省略号的代码。
另一个例子:
如果你选中的是一个c盘,则szBuffer内容为[-c-],通过 szBuffer [lstrlen (szBuffer) - 1] = '/0' ; 得到[-c-/0
if (!SetCurrentDirectory (szBuffer + 1)) 是判断当前目录是否为文件夹。从szBuffer+1开始后面的字符串为路径,即为-c-/0
它不是文件夹,所以设置不成功,判断成立,进入括号部分,
通过szBuffer [3] = ':' ;
szBuffer [4] = '/0' ;
把szBuffer从[-c-/0 变为 [-c:/0
从szBuffer+2开始后面的字符串为路径,所以用 SetCurrentDirectory (szBuffer + 2) ;把c:/0设置为当前路径。
解释的过于详细,累死我了。
继续看windows程序设计,好书好书啊。
- 《windows 程序设计》第九章 一个迷惑解答
- windows程序设计 第九章 ENVIRON.C中的一个问题
- 第九章 DLL windows程序设计 王艳平版
- 第九章 hook windows程序设计 王艳平版
- 第九章 HOOK程序测试 windows程序设计 王艳平版
- 第九章 HOOKDLL windows程序设计王艳平版
- 第九章 DLL文件 windows程序设计 王艳平版
- 第九章 导入表程序 windows程序设计 王艳平版
- 第九章 keyhook windows程序设计王艳平版
- 第九章 keyhookdll windows程序设计王艳平版
- Linux程序设计第九章
- C++primer第九章习题解答
- 《快学Scala》第九章习题解答
- Objective-C 程序设计 第九章
- 迷惑解答之正则表达式与通配符
- 迷惑解答之文本文件VS二进制文件
- 迷惑解答之typedef函数指针
- 一个毕业生的迷惑!!
- 2011-05-20check 6160
- 分页技术:
- obex介绍
- 勤哲EXCEL服务器应用设计的几个误区
- 9个县区统一初始化
- 《windows 程序设计》第九章 一个迷惑解答
- 新手上路学习配置C,C++,GTK等开发环境
- document.close()
- Xml—dom4j解析—学生信息管理系统
- Xml—dom4j解析以及写入xml文档时的乱码问题
- Xml—dom4j解析—简单的用户登录管理系统
- MySQL user performance
- C/C++ 两大GUI库Qt & GTK比较
- Gtk+ Tutorials & Resources