194上位机VC MFC判断驱动器的类型
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;
- }
- }
复制代码我们来演示下功能实现的整个过程
|