QQ登录

只需一步,快速开始

上位机MFC如何设置驱动器的卷标

[ 复制链接 ]
1.获取卷标
  1.        
  2.         CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO);

  3.         //获得驱动器名
  4.         DWORD dwBitMask = ::GetLogicalDrives();
  5.         if (dwBitMask != 0)
  6.         {
  7.                 TCHAR ch = 'A';

  8.                 while (dwBitMask > 0)
  9.                 {
  10.                         if (dwBitMask % 2 == 1)
  11.                         {
  12.                                 CString strDiriveName = _T("");
  13.                                 strDiriveName.Format(_T("%c:\"), ch);

  14.                                 CString strText = _T("");
  15.                                 strText.Format(_T("%s"), strDiriveName);
  16.                                 pComboBox->AddString(strText);
  17.                         }

  18.                         dwBitMask /= 2;

  19.                         ch++;
  20.                 }
  21.         }

  22.         pComboBox->SetCurSel(0);
  23.         OnSelchangeCombo();
复制代码
OnSelchangeCombo()为我们添加的组合框选项发生变化时触发的函数。

  1. void CDemoDlg::OnSelchangeCombo()
  2. {
  3.         CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO);
  4.         int nSel = pComboBox->GetCurSel();

  5.         CString strDriveName = _T("");
  6.         pComboBox->GetLBText(nSel, strDriveName);

  7.         //获得驱动器卷标
  8.         CString strVolumeName = _T("");
  9.         GetVolumeInformation(strDriveName, strVolumeName.GetBuffer(1024),
  10.                 1024, NULL, NULL, NULL, NULL, 0);
  11.         strVolumeName.ReleaseBuffer();

  12.         SetDlgItemText(IDC_TEXT, strVolumeName);
  13. }
复制代码
设置卷标可以使用按钮调用下面代码

  1. void CDemoDlg::OnTest()
  2. {
  3.         CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO);
  4.         int nSel = pComboBox->GetCurSel();

  5.         CString strDriveName = _T("");
  6.         pComboBox->GetLBText(nSel, strDriveName);

  7.         CString strVolumeName = _T("");
  8.         GetDlgItemText(IDC_TEXT, strVolumeName);
  9.        
  10.         //设置驱动器卷标
  11.         if (::SetVolumeLabel(strDriveName, strVolumeName))
  12.         {
  13.                 AfxMessageBox(_T("设置驱动器卷标成功。"));
  14.         }
  15.         else
  16.         {
  17.                 AfxMessageBox(_T("设置驱动器卷标失败。"));
  18.         }
  19. }
复制代码
IDC_TEXT为编程框控件ID,供输入内容用。
回复

使用道具 举报

快速回复 返回列表 客服中心 搜索