为什么我改一个文件内容,会出现两次 
还有如果我改了子目录。为什么只能获取子目录名? 
UINT MyThreadProc( LPVOID pParam ) 

::CtestDirDlg *PWnd=(CtestDirDlg*)pParam; 
HANDLE hDir=CreateFile(_T("D:\\arswp"),GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_DELETE, 
NULL,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS,NULL); 
if(INVALID_HANDLE_VALUE==hDir) 

PWnd->MessageBox("指定的文件目录不存在!"); 

else 

char buf[50*sizeof(FILE_NOTIFY_INFORMATION)+MAX_PATH]; 
::FILE_NOTIFY_INFORMATION * pNotify=(FILE_NOTIFY_INFORMATION*)buf; 
DWORD BytesReturned; 
while(true) 

if(ReadDirectoryChangesW(hDir,pNotify,sizeof(buf),true, 
FILE_NOTIFY_CHANGE_LAST_WRITE,//FILE_NOTIFY_CHANGE_CREATION| 
&BytesReturned,NULL,NULL)) 

char tmp[MAX_PATH],str1[MAX_PATH],str2[MAX_PATH]; 
memset(tmp,0,sizeof(tmp)); 
bool hasNext=true; 
do{ 
WideCharToMultiByte(CP_ACP,0,pNotify->FileName,pNotify->FileNameLength/2,tmp,99,NULL,NULL); 
strcpy(str1,tmp); 
::CEdit* pEdit=(::CEdit*)PWnd->GetDlgItem(IDC_EDIT1); CString str; 
pEdit->GetWindowText(str); 
str=str+"\r\n"+str1; 
pEdit->SetWindowText(str); 
if(pNotify->NextEntryOffset>0) 

hasNext=true; 

else 

hasNext=false; 

pNotify=(FILE_NOTIFY_INFORMATION*)((char*)pNotify+pNotify->NextEntryOffset); 
}while(pNotify->NextEntryOffset>0); 



return 0; 

BOOL CtestDirDlg::OnInitDialog() 

CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); 
ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); 
if (pSysMenu != NULL) 

CString strAboutMenu; 
strAboutMenu.LoadString(IDS_ABOUTBOX); 
if (!strAboutMenu.IsEmpty()) 

pSysMenu->AppendMenu(MF_SEPARATOR); 
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); 

} // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 
//  执行此操作 
SetIcon(m_hIcon, TRUE); // 设置大图标 
SetIcon(m_hIcon, FALSE); // 设置小图标 AfxBeginThread(MyThreadProc,this); 
// TODO: 在此添加额外的初始化代码 return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE 

为什么我改一个文件内容,会出现两次 
还有如果我改了子目录。为什么只能获取子目录名?