如何获取一个路径下子文件夹的个数啊求解

怎么获取一个路径下子文件夹的个数啊?求解
int num = 0;
CFileFind find;
CString temp ;
temp="D:\\test";
temp.Append("\\*.*");
BOOL working = find.FindFile(temp);
while (working)
{
working = finder.FindNextFile();
if (finder.IsDots())
continue;
if (finder.IsDirectory())
num++;
}
是不是这样写的啊?
但是结果不对啊?一直为1

------解决方案--------------------
C/C++ code
#include <stdio.h>
#include <tchar.h>

WIN32_FIND_DATA wfd;

TCHAR szDir[MAX_PATH] = TEXT("D:\\ccrun\\"); // 要查询的目录
TCHAR szFile[MAX_PATH] = TEXT("");
_tcscpy(szFile, szDir);
_tcscat(szFile, TEXT("*.*"));

HANDLE hFind = ::FindFirstFile(szFile, &wfd);
int nSubDirCount = 0;

if (INVALID_HANDLE_VALUE != hFind)
{
    do
    {
        if (!_tcscmp(wfd.cFileName, TEXT(".")) || !_tcscmp(wfd.cFileName, TEXT("..")))
            continue;

        // 如果是子目录就计数
        if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            nSubDirCount++;

    } while (::FindNextFile(hFind, &wfd));
}
::FindClose(hFind);

// 最后结果存储在 nSubDirCount 中