热度 14
2012-11-29 20:44
1206 次阅读|
1 个评论
终于把《windows 程序设计》看了三百多页(三分之一),在看《windows 程序设计》第九章时, HEAD程序代码中有个疑问,具体问题如下: 代码为: szBuffer = '/0' ; // If setting the directory doesn't work, maybe it's // a drive change, so try that. if (!SetCurrentDirectory (szBuffer + 1)) { szBuffer = ':' ; szBuffer = '/0' ; SetCurrentDirectory (szBuffer + 2) ; } ....(省略代码) 这个szBuffer+1 是什么意思? szBuffer , szBuffer 为什么这么设置? 解答: 这是LB_DIR影响的结果造成的。 1.如果是文件,列表中的一项就显示为文件名; 2.如果不是文件,就可能为文件夹或者驱动盘。 本文探讨的是属于第二种情况,即为不是文件。szBuffer列表一项的字符串,它有3种可能: //上一层目录 //文件夹名称,如 ,一个名为world的文件夹 //驱动盘名称,如 ,c盘 举个例子: 如果你选中的是一个叫world的文件夹,则szBuffer内容为 ,通过 szBuffer = '/0' ; 得到 ,通过 szBuffer = '/0' ; 得到 = ':' ; szBuffer = '/0' ; 把szBuffer从[-c-/0 变为 [-c:/0 从szBuffer+2开始后面的字符串为路径,所以用 SetCurrentDirectory (szBuffer + 2) ;把c:/0设置为当前路径。