更新时间:2015-11-09 22:44:44浏览次数:1+次
函数原形:
DWORD GetLogicalDriveStrings(
DWORD nBufferLength, // size of buffer
LPTSTR lpBuffer // drive strings buffer
);
说明:GetLogicalDriveStrings函数将一个缓冲区lpBuffer填入在计算机上存在的硬盘盘符.
下面我们看下在两种字符集下GetLogicalDriveStrings函数的实现:
Unicode:
BOOL CCleanFileDlg::LoadDiskLetter()
{
DWORD dwLen = GetLogicalDriveStringsW(0, NULL);////获取系统盘符字符串的长度
if (dwLen > 0)
{
TCHAR *pNameList = new TCHAR[dwLen + 2]; //分配一个字符缓冲区
memset(pNameList, 0, dwLen + 2);
GetLogicalDriveStringsW(dwLen, (LPWSTR)pNameList); //获取系统盘符,将其存储在pNameList中,格式为"C:\ D:\ E:\ F:\ ..."
TCHAR *pItem = pNameList;
while (*pItem != '\0') //各盘符之间有一个空格,需要分解字符串,获取每一个盘符
{
m_Disk.AddString(pItem); //向组合框中添加盘符
pItem += wcslen(pItem) + 1; //执行下一个盘符,加1是为过滤掉各盘符间的一个空格
}
//delete[] pNameList;
return TRUE;
}
return FALSE;
}
ANSI:
BOOL CClearTmpFileDlg::LoadDiskLetter() //加载系统盘符
{
DWORD dwLen = GetLogicalDriveStrings(0, NULL); //获取系统盘符字符串的长度
if (dwLen > 0)
{
char *pNameList = new char[dwLen+1]; //分配一个字符缓冲区
memset(pNameList, 0, dwLen+1);
GetLogicalDriveStrings(dwLen, pNameList); //获取系统盘符,将其存储在pNameList中,格式为"C:\ D:\ E:\ F:\ ..."
char *pItem = pNameList;
while (*pItem != '\0') //各盘符之间有一个空格,需要分解字符串,获取每一个盘符
{
m_Disk.AddString(pItem); //向组合框中添加盘符
pItem += strlen(pItem) + 1; //执行下一个盘符,加1是为过滤掉各盘符间的一个空格
}
delete [] pNameList; //释放字符缓冲区
return TRUE; //操作成功,返回TRUE
}
return FALSE;
}
最后得实现结果:
相关资讯