分享三个MFC获取磁盘名称和目录的方法
void CGetLogicalDriveStringsDlg::getlogdrv()
{
//获取所有盘符
CComboBox m_com;
m_com.ResetContent();
TCHAR szBuf[100];
memset(szBuf,0,100);
DWORD len=GetLogicalDriveStrings(sizeof(szBuf)/sizeof(TCHAR),szBuf);
for (TCHAR * s= szBuf;*s;s+=_tcslen(s)+1)
{
//MessageBox(sDrivePath);
CString k = s;
m_com.AddString(k);
}
m_com.SetCurSel(0);
}
//判断U盘是否插入
void CGetLogicalDriveStringsDlg::OnDeviceChange(UINT nEventType, DWORD dwData)
{
if( nEventType ==32768)
{
GetDlgItem(IDC_STATIC5)->SetWindowText(_T("U盘插入"));
}
else if(nEventType ==32772)
{
GetDlgItem(IDC_STATIC5)->SetWindowText(_T("U盘拔出"));
}
getlogdrv();
}
//使用一个递归函数遍历磁盘目录 strdir为盘符根目录 如:C:\\
void browsedir(CString strdir)
{
CFileFind ff;
CString szdir=strdir ;
if(szdir.Right(1)!= "\\ ")
szdir+= "\\ ";
szdir+= "*.* ";
BOOL res=ff.FindFile(szdir);
while(res)
{
res=ff.FindNextFile();
if(ff.IsDirectory()&&!ff.IsDots())
browsedir(ff.GetFilePath());
else if(!ff.IsDirectory()&&!ff.IsDots())
{
str.Format( "%s ",ff.GetFilePath());
m_ctrllist.AddString(str);
}
}
ff.close;
}