上次那個只獲取了驅動器名稱而沒有獲取相關資訊,這次針對這些做了小小調整。最終效果見下圖:先修改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);
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,""))
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++;//下一項
}
好了,就寫到這裡。
視覺化程式設計的小作業
申明 請用這個的同學修改變數名函式名和刪除注釋,否則後果自負.視覺化程式設計老師布置的題目 獲取驅動器名和圖示,插入到列表檢視,而且可以隨意切換檢視風格。用執行緒讓乙個進度條走動,並可以隨時終止這個執行緒,最終效果如下 實現過程 首先建立乙個以學號命名的工程,選擇單對話方塊模式,新增1個列表檢視控制...
視覺化程式設計storyBoard
1.針對空模板,先把自動建立的window刪除 2.建立乙個storyboard 3.在general中將maininte ce選為建立的storyboard 4.新建立的storyboard裡什麼也沒有,拖拽乙個viewcontroller上去 5.選中viewcontroller,在工具欄選擇第...
視覺化程式設計原理
視覺化程式設計原理 物件 安裝的程式 事件 滑鼠雙擊 單擊 右鍵 回車等快捷鍵的觸發 事件 我們對不同的物件實施相同的事件,結果可能不相同。為什麼?右鍵事件觸發的方法 不一樣。視覺化程式設計介面設計 ui 窗體 控制項 窗體是來存放控制項的容器 例子事件 click mouseclick load ...