可视化编程小作业之小小改进
2008-11-07 14:51
337 查看
上次那个只获取了驱动器名称而没有获取相关信息,这次针对这些做了小小调整。最终效果见下图:
先修改OnInitDialog函数,往列表视图添加3列:
//初始化列表视图
m_listMain.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_INFOTIP);
m_listMain.InsertColumn(0,"名称",LVCFMT_LEFT,80);
m_listMain.InsertColumn(1,"卷标",LVCFMT_LEFT,80);
m_listMain.InsertColumn(2,"文件系统",LVCFMT_LEFT,80);
m_listMain.InsertColumn(3,"总大小",LVCFMT_LEFT,80);
然后就是修改GetPen函数,获取相关信息:
CString str;
char Drivers[120];//用于保存所有驱动器名称
char* pDriver=NULL;//定义指针去读取单个驱动器名称
GetLogicalDriveStrings(120,Drivers);//获取所有驱动器名称
HICON bhIcon;//大图标
HICON shIcon;//小图标
//ExtractIconEx函数从指定DLL中提取图标
//第一个参数为要操作的DLL
//第二个参数为要获取图标的序号
//第三个参数为该图标要保存到那个图标上(大图标)
//第四个参数为该图标要保存到那个图标上(小图标)
// 8 硬盘驱动器图标
ExtractIconEx("SHELL32.DLL",8,&bhIcon,&shIcon,1);
image.Add(shIcon); //添加小图标到图像列表
bimage.Add(bhIcon); //添加大图标到图像列表
// 7 可移动的驱动器图标
ExtractIconEx("SHELL32.DLL",7,&bhIcon,&shIcon,1);
image.Add(shIcon);
bimage.Add(bhIcon);
// 9 网络驱动器图标
ExtractIconEx("SHELL32.DLL",11,&bhIcon,&shIcon,1);
image.Add(shIcon);
bimage.Add(bhIcon);
// 11 CD-ROM驱动器图标
ExtractIconEx("SHELL32.DLL",9,&bhIcon,&shIcon,1);
image.Add(shIcon);
bimage.Add(bhIcon);
pDriver=Drivers;//指向驱动器名称头
DWORD Type=0;//驱动器类型
int i=0;//列表视图序号
int index=0;//图像列表序号 0为硬盘驱动器
while (strcmp(pDriver,""))
{
Type=GetDriveType(pDriver);//获取驱动器类别
switch (Type)
{
case DRIVE_FIXED:
index=0;
break;
case DRIVE_REMOVABLE://移动驱动器
index=1;
break;
case DRIVE_CDROM://光盘
index=2;
break;
case DRIVE_REMOTE://网络驱动器
index=3;
break;
}
char volumeName[255];//卷标名
char volumeType[255];//文件系统格式
memset(volumeName,0,255);//每次都初始化一下清空上次保存的记录
memset(volumeType,0,255);//每次都初始化一下清空上次保存的记录
//获取驱动器信息
//第1个参数表示要获取的盘符
//第2个参数表示接收卷名的缓存
//第3个参数指定缓存大小
//第7个参数表示文件系统格式缓存
//第8个参数文件系统名称
GetVolumeInformation(pDriver,volumeName,255,NULL,NULL,NULL,volumeType,255);
str.Format(pDriver);//把char转换为CString
str.Remove('//');//移除中的后面的斜杠
m_listMain.InsertItem(i,str,index);//插入到列表视图 index为图标序号
str.Format(volumeName);
m_listMain.SetItemText(i,1,str);//插入驱动器卷标
str.Format(volumeType);
m_listMain.SetItemText(i,2,str);//插入驱动器格式
unsigned long total;
unsigned long size1;
unsigned long size2;
//该函数是获取指定磁盘的信息(包括剩余空间的信息)
//lpRootPathName,磁盘的根目录
//lpSectorsPerCluster, 每个簇的扇区数目
//lpBytesPerSector 指定每个扇区的字节数目
//lpNumberOfFreeClusters, 磁盘总的空闲簇数目
//lpTotalNumberOfClusters 磁盘总的簇数目
GetDiskFreeSpace(pDriver,&size1,&size2,NULL,&total);
double d=0.0;
d=(double)total*size1*size2/1024/1024/1024;//转换以G为单位
str.Format("%.1fG",d);
m_listMain.SetItemText(i,3,str);//插入驱动器大小
pDriver+=strlen(pDriver)+1; //下一个驱动器
i++;//下一项
}
好了,就写到这里。
先修改OnInitDialog函数,往列表视图添加3列:
//初始化列表视图
m_listMain.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_ONECLICKACTIVATE|LVS_EX_INFOTIP);
m_listMain.InsertColumn(0,"名称",LVCFMT_LEFT,80);
m_listMain.InsertColumn(1,"卷标",LVCFMT_LEFT,80);
m_listMain.InsertColumn(2,"文件系统",LVCFMT_LEFT,80);
m_listMain.InsertColumn(3,"总大小",LVCFMT_LEFT,80);
然后就是修改GetPen函数,获取相关信息:
CString str;
char Drivers[120];//用于保存所有驱动器名称
char* pDriver=NULL;//定义指针去读取单个驱动器名称
GetLogicalDriveStrings(120,Drivers);//获取所有驱动器名称
HICON bhIcon;//大图标
HICON shIcon;//小图标
//ExtractIconEx函数从指定DLL中提取图标
//第一个参数为要操作的DLL
//第二个参数为要获取图标的序号
//第三个参数为该图标要保存到那个图标上(大图标)
//第四个参数为该图标要保存到那个图标上(小图标)
// 8 硬盘驱动器图标
ExtractIconEx("SHELL32.DLL",8,&bhIcon,&shIcon,1);
image.Add(shIcon); //添加小图标到图像列表
bimage.Add(bhIcon); //添加大图标到图像列表
// 7 可移动的驱动器图标
ExtractIconEx("SHELL32.DLL",7,&bhIcon,&shIcon,1);
image.Add(shIcon);
bimage.Add(bhIcon);
// 9 网络驱动器图标
ExtractIconEx("SHELL32.DLL",11,&bhIcon,&shIcon,1);
image.Add(shIcon);
bimage.Add(bhIcon);
// 11 CD-ROM驱动器图标
ExtractIconEx("SHELL32.DLL",9,&bhIcon,&shIcon,1);
image.Add(shIcon);
bimage.Add(bhIcon);
pDriver=Drivers;//指向驱动器名称头
DWORD Type=0;//驱动器类型
int i=0;//列表视图序号
int index=0;//图像列表序号 0为硬盘驱动器
while (strcmp(pDriver,""))
{
Type=GetDriveType(pDriver);//获取驱动器类别
switch (Type)
{
case DRIVE_FIXED:
index=0;
break;
case DRIVE_REMOVABLE://移动驱动器
index=1;
break;
case DRIVE_CDROM://光盘
index=2;
break;
case DRIVE_REMOTE://网络驱动器
index=3;
break;
}
char volumeName[255];//卷标名
char volumeType[255];//文件系统格式
memset(volumeName,0,255);//每次都初始化一下清空上次保存的记录
memset(volumeType,0,255);//每次都初始化一下清空上次保存的记录
//获取驱动器信息
//第1个参数表示要获取的盘符
//第2个参数表示接收卷名的缓存
//第3个参数指定缓存大小
//第7个参数表示文件系统格式缓存
//第8个参数文件系统名称
GetVolumeInformation(pDriver,volumeName,255,NULL,NULL,NULL,volumeType,255);
str.Format(pDriver);//把char转换为CString
str.Remove('//');//移除中的后面的斜杠
m_listMain.InsertItem(i,str,index);//插入到列表视图 index为图标序号
str.Format(volumeName);
m_listMain.SetItemText(i,1,str);//插入驱动器卷标
str.Format(volumeType);
m_listMain.SetItemText(i,2,str);//插入驱动器格式
unsigned long total;
unsigned long size1;
unsigned long size2;
//该函数是获取指定磁盘的信息(包括剩余空间的信息)
//lpRootPathName,磁盘的根目录
//lpSectorsPerCluster, 每个簇的扇区数目
//lpBytesPerSector 指定每个扇区的字节数目
//lpNumberOfFreeClusters, 磁盘总的空闲簇数目
//lpTotalNumberOfClusters 磁盘总的簇数目
GetDiskFreeSpace(pDriver,&size1,&size2,NULL,&total);
double d=0.0;
d=(double)total*size1*size2/1024/1024/1024;//转换以G为单位
str.Format("%.1fG",d);
m_listMain.SetItemText(i,3,str);//插入驱动器大小
pDriver+=strlen(pDriver)+1; //下一个驱动器
i++;//下一项
}
好了,就写到这里。
相关文章推荐
- AnyviewC编程作业系统——支持程序可视化运行、调试和测评
- 可视化编程的小作业
- Coursera公开课-Machine_learing:编程作业6
- 网易云课堂java程序设计(第二周编程作业)
- THU数据结构编程作业一:真二叉树重构(Proper Rebuild)
- 团队作业3——需求改进&系统设计
- 团队作业3——需求改进&系统设计
- 前端可视化编程:liveReload安装,sublime 3
- 第二次作业-编程
- 《团队-团队编程项目作业名称-团队信息》
- Machine Learning 第二波编程作业 – Logistic Regression
- 《Java程序设计》第14周实验作业:GUI编程初步
- 作业四: 结对编程项目---四则运算
- 第五周作业——有向图强连通分量的编程实现
- 技术积累应用-可视化编程平台作用
- 技术积累应用-可视化编程平台应用方式-数据整合
- VC打印机编程之两篇有用的文章获取打印机与打印作业的状态和设置打印机模式并预览打印
- 《Java程序设计》第三次作业:网络编程
- 吴恩达 深度学习 编程作业(5-1)Part 3 - Improvise a Jazz Solo with an LSTM Network
- 吴恩达Coursera深度学习课程 DeepLearning.ai 编程作业——Regularization(2-1.2)