1.步骤
- 获取所有驱动器名称的总长度
- 申请接收缓冲区内存
- 获取驱动器目录存入申请的堆内存区
- 遍历接收缓冲区分离驱动器目录
- 释放内存空间
2、测试代码
void CTreeTestDlg::FindDisk() { // 获取系统分区驱动器字符串信息 size_t nSize = GetLogicalDriveStrings(0, NULL); // 驱动器总长度 TCHAR* pbuf = new TCHAR[1 + nSize]; // 缓冲区空间申请 GetLogicalDriveStrings(nSize, pbuf); // 获取驱动器目录 TCHAR* p = pbuf; // 临时指针,用于访问驱动器名称 size_t nLen = _tcslen(p); // 驱动名字(如C:)字符串长度 while (nLen > 0) { // 插入到树形控件 m_tree.InsertItem(p, m_hItem); // 计算下一个驱动器名称首地址 p += nLen + 1; nLen = _tcslen(p); } delete []pbuf; // 释放缓冲区内存 }
3、测试效果