获取磁盘符信息
項目中有個子模塊是ftp客戶端,需要羅列本地各個磁盤符,比如C盤、D盤、E盤、F盤。然后進行一些相關(guān)的上傳下載就比較方便,具體樣子如下所示:
需要利用一個Combox控件實現(xiàn)。
廢話不多說,先上代碼:
void CFTPCilentDlg::Getlocaldrv()
{//獲取所有盤符m_comlocal.ResetContent(); //清除目前所有項TCHAR szBuf[100];memset(szBuf,0,100);DWORD len=GetLogicalDriveStrings(sizeof(szBuf)/sizeof(TCHAR),szBuf);for (TCHAR * s= szBuf;*s;s+=_tcslen(s)+1){//MessageBox(sDrivePath);CString k = s;m_comlocal.AddString(k);}m_comlocal.SetCurSel(0); //設(shè)置0項為顯示的內(nèi)容
}
代碼中的m_comlocal是Combox控件關(guān)聯(lián)的控件變量,ResetContent()和AddString()是對該控件的操作。所以其中核心的函數(shù)是GetLogicalDriveStrings()函數(shù)。那我就對這個函數(shù)簡單介紹一下:
定義:
DWORD GetLogicalDriveStrings(DWORD nBufferLength,LPTSTR lpBuffer);
獲取一個字串,其中包含了當(dāng)前所有邏輯驅(qū)動器的根驅(qū)動器路徑
返回值
返回保存所有數(shù)據(jù)所需要的字節(jié)數(shù)。應(yīng)該總是比較返回值與參數(shù)cchBuffer的大小。
參數(shù)表
參數(shù) 類型及說明
DODOWRD cchBuffer,緩沖區(qū)的大小
LPTSTR lpszBuffer,用于裝載邏輯驅(qū)動器名稱的字串。每個名字都用一個NULL字符分隔,在最后一個名字后面用兩個NULL表示中止(空中止) 例如A:\C:\
用法其實很簡單。我的項目中做到這里其實就已經(jīng)可以了。關(guān)于擴展的一些功能我引用別人的博客:http://www.cnblogs.com/qq78292959/archive/2012/06/12/2546914.html
1.獲取系統(tǒng)中邏輯驅(qū)動器的數(shù)量
The GetLogicalDrives function retrieves a bitmask representing the currently available disk drives.
DWORD GetLogicalDrives(void);
2.獲取所有驅(qū)動器字符串信息
The GetLogicalDriveStrings function fills a buffer with strings that specify valid drives in the system.
DWORD GetLogicalDriveStrings(
DWORD nBufferLength,
LPTSTR lpBuffer
);
3.獲取驅(qū)動器類型
The GetDriveType function determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive.
UINT GetDriveType(
LPCTSTR lpRootPathName
);
- 獲取驅(qū)動器磁盤的空間狀態(tài),函數(shù)返回的是個BOOL類型數(shù)據(jù)
The GetDiskFreeSpaceEx function retrieves information about the amount of space available on a disk volume: the total amount of space, the total amount of free space, and the total amount of free space available to the user associated with the calling thread.
BOOL GetDiskFreeSpaceEx(
LPCTSTR lpDirectoryName,
PULARGE_INTEGER lpFreeBytesAvailable,
PULARGE_INTEGER lpTotalNumberOfBytes,
PULARGE_INTEGER lpTotalNumberOfFreeBytes
);
利用上面的四五個函數(shù)基本可以實現(xiàn)對磁盤符的操作。因為我的項目中只是需要羅列磁盤符,然后根據(jù)Combox控件中選擇的磁盤,羅列該磁盤目錄下的文件目錄:
關(guān)于如何羅列每個磁盤符下面的文件目錄路,我在后面的博客會寫到。
OK,到此!
拙見,小記!
總結(jié)
- 上一篇: VS2010使用Skin++
- 下一篇: 使用Combox控件的一个问题