工控编程吧
标题:
194上位机VC MFC判断驱动器的类型
[打印本页]
作者:
qq263946146
时间:
2016-1-29 21:33
标题:
194上位机VC MFC判断驱动器的类型
(, 下载次数: 1)
上传
点击文件名下载附件
194上位机VC MFC判断驱动器的类型
功能展示
一般我们电脑的驱动器只有硬盘和光驱,常用的还有U盘等,我们当前例程实现当前系统指定驱动类型的判断功能,通过选择不同驱动器,会相应显示出选择驱动器的类型,效果如图;
要点提示
1.驱动器的获取可以用函数GetDriveType() ,函数原型为UINTGetDriveType(
LPCTSTR lpRootPathName ) lpRootPathName 包含了根目录路径的字符串指针;
返回值:
DRIVE_UNKNOWN 未知的磁盘类型
DRIVE_NO_ROOT_DIR 说明lpRootPathName是无效的
DRIVE_REMOVABLE 可移动磁盘
DRIVE_FIXED 固定磁盘
DRIVE_REMOTE 网络磁盘
DRIVE_CDROM 光驱
DRIVE_RAMDISK 为RAM
2.根目录也就是盘符的获取可以用函数GetLogicalDriveStrings(),函数原型DWORD WINAPI GetLogicalDriveStrings( _In_DWORDnBufferLength, _Out_LPTSTR lpBuffer); nBufferLength:缓冲区的尺寸 不包括结尾的'\0' 如果是此参数为0 后面的lpBuffer则不使用
lpBuffer:缓冲区
返回值:
函数执行成功..返回填充完毕的缓冲区字符的的个数..不是长度..char和TCHAR 返回数目都是一样的..
一般是4的倍数...(形如C:\ 包括之后的一个空字符0)..
如果缓冲区不够大,则返回值大于nBufferLength
如果失败..函数返回0..若想获得更多的错误信息,请使用GetLastError函数
实现功能
1.新建基于对话框的应用程序
2.拖拽一COMBOBOX控件ID为IDC_COMBO1,用于罗列出当前系统的有效盘符;
手提一编辑框ID为IDC_EDIT1用于显示选择的驱动器的类型;
3.添加COMBOBOX组合框控件的选择改变触发函数,实现选择盘符驱动类型的判断;
4.自定义函数InitCom()用于将当前系统全部盘符添加到combobox;在程序初始化时调用此函数一次;
void CGkbc8Dlg::InitCom()
{
CComboBox* pCombobox = (CComboBox*)GetDlgItem(IDC_COMBO1);
size_t alldriver=::GetLogicalDriveStrings(0,NULL);
_TCHAR *driverstr;
driverstr=new _TCHAR[alldriver+sizeof(_T(""))];
if(GetLogicalDriveStrings(alldriver,driverstr)!=alldriver-1)
return ;
_TCHAR *pdriverstr=driverstr;
size_t driversize=strlen(pdriverstr);
while(driversize>0)
{
pCombobox->AddString(pdriverstr);
pdriverstr+=driversize+1;
driversize=strlen(pdriverstr);
}
pCombobox->SetCurSel(0);
OnSelchangeCombo1() ;
}
复制代码
void CGkbc8Dlg::OnSelchangeCombo1()
{
CComboBox* pCombobox = (CComboBox*)GetDlgItem(IDC_COMBO1);
//
CString itemstr;
pCombobox->GetLBText(pCombobox->GetCurSel(),itemstr);
switch(::GetDriveType(itemstr))
{
case 2:
SetDlgItemText(IDC_EDIT1,"移动硬盘");
break;
case 3:
SetDlgItemText(IDC_EDIT1,"固定硬盘");
break;
case 5:
SetDlgItemText(IDC_EDIT1,"光驱");
break;
case 4:
SetDlgItemText(IDC_EDIT1,"网络驱动器");
break;
case 6:
SetDlgItemText(IDC_EDIT1,"RAM");
break;
default:
SetDlgItemText(IDC_EDIT1,"未知");
break;
}
}
复制代码
我们来演示下功能实现的整个过程
[iqiyi]http://player.video.qiyi.com/38d929f1a8f387b24b8e22dd84f9da9c/0/0/w_19rszdz6x5.swf-albumId=5389631909-tvId=5389631909-isPurchase=0-cnId=12[/iqiyi]
(, 下载次数: 0)
上传
点击文件名下载附件
[note]1[/note]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4