一、“..”不需要加入到树结构
// 第一个文件是“.”
printf ("First file name is %s/n", FindFileData.cFileName);
// 第二个文件是“..”,也不需要加入树结构
FindNextFile(hFind, &FindFileData);
// 其他加入结构
while (FindNextFile(hFind, &FindFileData) != 0)
{
// printf ("Next file name is %s/n", FindFileData.cFileName);
HTREEITEM hItemChild = pTree->InsertItem(FindFileData.cFileName,0,1, hItemParent, TVI_LAST);
}
二、只有“打印机共享”的服务器不加入搜索结果
把加入IP地址的语句移到EnumResource逻辑里面来。
// If the call succeeds, loop through the structures.
if (dwResultEnum == NO_ERROR)
{
HTREEITEM hItemParent;
if (cEntries > 0)
{
hItemParent = pTree->InsertItem(strIP, 0, 1);
}
for(i = 0; i < cEntries; i++)
{ ……
三、能使用递归的方法进行完全遍历吗?
1,上个月在做FTP资料遍历的时候也是同样的问题,递归的方法行不通。
2,文件操作也类似,SetCurrentDirectory和FindFirstFile没有关联关系。
if (!SetCurrentDirectory(lpConnectable->lpRemoteName))
{
DWORD dwErrorCode = GetLastError();
printf ("SetCurrentDirectory. Error is %u/n", dwErrorCode);
return (-1);
}
hFind = FindFirstFile("*", &FindFileData);
3,考虑WPS遍历,重用前面使用到的Queue,把它的声名定义抽出来。
抽出来之后居然编译都通不过,查了下资料,CQueue.cpp之前必须要加上#include "stdafx.h",果然不错!感谢laiyiling老兄在04年的答案!
是预编译的问题:
如果发生错误的文件是由其他的C代码文件添加进入当前工程而引起的,则Alt+F7进入当前工程的Settings,选择C/C++选项卡,从Category组合框中选中Precompiled Headers,选择Not Using Precompiled headers。确定
如果发生错误的文件原本是该工程中的,则检查该文件头部有没有#include "stdafx.h"语句,没有的话添加。
如果还不行,也有可能是定义的类或结构体等最后忘了加分号,注意一下。
四、使用WPS对smb资源服务器进行遍历
初步分析,入队列的点放在AddConnectableRcs里面。明天继续。