MFC中,在下列代码的基础上修改,通过check box实现不同列表中内存数据单位由GB切换MB.m_ListCtrl.InsertColumn(0, _T("软件名称"), LVCFMT_LEFT, 300);
m_ListCtrl.InsertColumn(1, _T("版本号"), LVCFMT_LEFT, 300);
m_ListCtrl.InsertColumn(2, _T("发布者"), LVCFMT_LEFT, 300);
m_ListCtrl.InsertColumn(3, _T("安装路径"), LVCFMT_LEFT, 300);
// 枚举注册表获取软件信息
EnumerateInstalledSoftware();
Clist2.InsertColumn(0, _T("盘符"), LVCFMT_LEFT, 200);
Clist2.InsertColumn(1, _T("磁盘类型"), LVCFMT_LEFT, 200);
Clist2.InsertColumn(2, _T("磁盘名称"), LVCFMT_LEFT, 200);
Clist2.InsertColumn(3, _T("系统文件"), LVCFMT_LEFT, 200);
Clist2.InsertColumn(4, _T("全部容量"), LVCFMT_LEFT, 200);
Clist2.InsertColumn(5, _T("剩余容量"), LVCFMT_LEFT, 200);
// 新列表
Clist3.InsertColumn(1, TEXT("C盘"), LVCFMT_LEFT,600);
Clist3.InsertColumn(2, TEXT("D盘"), LVCFMT_LEFT,600);
// 定义要处理的磁盘数组
CStringArray drives;
drives.Add(_T("C:\\"));
drives.Add(_T("D:\\"));
for (int i = 0; i < drives.GetSize(); i++)
{
CString strDrive = drives[i];
// 获取磁盘类型
UINT nDiskType = GetDriveType(strDrive);
CString strDiskType;
switch (nDiskType)
{
case DRIVE_FIXED:
strDiskType = _T("硬盘");
break;
case DRIVE_REMOVABLE:
strDiskType = _T("移动式磁盘");
break;
case DRIVE_CDROM:
strDiskType = _T("光驱");
break;
case DRIVE_REMOTE:
strDiskType = _T("网络磁盘");
break;
case DRIVE_RAMDISK:
strDiskType = _T("虚拟RAM磁盘");
break;
case DRIVE_UNKNOWN:
strDiskType = _T("未知设备");
break;
default:
strDiskType = _T("未知类型");
break;
}
// 获取磁盘名称和系统文件类型
TCHAR szVolumeName[MAX_PATH] = { 0 };
TCHAR szFileSystemName[MAX_PATH] = { 0 };
GetVolumeInformation(strDrive, szVolumeName, MAX_PATH, NULL, NULL, NULL, szFileSystemName, MAX_PATH);
CString strVolumeName(szVolumeName);
CString strFileSystemName(szFileSystemName);
// 获取磁盘容量信息
ULARGE_INTEGER liTotalBytes, liFreeBytes;
if (GetDiskFreeSpaceEx(strDrive, &liFreeBytes, &liTotalBytes, NULL))
{
double dTotalGB = (double)liTotalBytes.QuadPart / (1024 * 1024 * 1024);
double dFreeGB = (double)liFreeBytes.QuadPart / (1024 * 1024 * 1024);
CString strTotalGB, strFreeGB;
strTotalGB.Format(_T("%.2fGB"), dTotalGB);
strFreeGB.Format(_T("%.2fGB"), dFreeGB);
// 插入行
int nItem = Clist2.InsertItem(i, strDrive);
Clist2.SetItemText(nItem, 1, strDiskType);
Clist2.SetItemText(nItem, 2, strVolumeName);
Clist2.SetItemText(nItem, 3, strFileSystemName);
Clist2.SetItemText(nItem, 4, strTotalGB);
Clist2.SetItemText(nItem, 5, strFreeGB);
Clist3.InsertItem(0, TEXT("总容量:100GB"));
Clist3.InsertItem(1, TEXT("可用容量:2GB"));
Clist3.SetItemText(0, 1, strTotalGB);
Clist3.SetItemText(1, 1, strFreeGB);
}
}