新人学MFC在回调函数遇到了问题

做一个程序,把磁盘上某一文件夹里面的文件显示出来;如果对文件进行了删除、移动、添加操作,给出系统提示
char szPath[MAX_PATH]; //存放选择的目录路径
memset(szPath, 0, sizeof(szPath));

BROWSEINFO bi;   
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = (LPSTR)szPath;
bi.lpszTitle = ("文件目录:");
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE|BIF_BROWSEINCLUDEFILES|BIF_EDITBOX;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;

//弹出选择目录对话框
LPITEMIDLIST lp = SHBrowseForFolder(&bi);

if(lp && SHGetPathFromIDList(lp, (LPSTR)szPath))
{
    CString strOutDir;
    strOutDir.Format(_T("%s"), szPath);
    AfxMessageBox(strOutDir);
}

遇到了什么问题呢?没有看到!

遍历文件:CFileFind::FindFile/FileNextFile()
文件监控:ReadDirectoryChangesW()