上一篇講了基本的列表框用法,我后來看了一下文章,感覺可能有些人看完文章都不知道怎么用,就像我剛開始一樣,是這樣的,我在這里再說一些多余的話,對于控件怎么用,注意windows是基于消息隊列的,所以一切都是基于消息的,所以比如說對列表框的初始化,如添加字串,設置默認顯示,這些就可以在父窗口的WM_CREATE消息中盡心,而像選擇什么的會引起識別碼(ID)的操作,必須在WM_COMMAND消息下處理,還有其他的一些內容則需要讀者自己判斷應該在什么位置進行。
然后進入本文的正文,上篇講了很多列表框的消息,本片我則會介紹一個功能強大的列表框消息,LB_DIR,DIR即是directory,如果用過kali linux或者windows command line(cmd)應該會知道dir是顯示當前目錄的文件夾和文件的命令,那么對于列表框來說,就是在列表框中列出當前問目錄下的文件夾和文件作為可選擇的項目。
先說創建,你可以在父窗口的WM_CREATE消息下用CreateWIndow函數來創建列表框,然后用SendMessage函數來告訴這個列表框你應該顯示目錄
#define DIRATTR (DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | DDL_DIRECTORY | DDL_ARCHIVE | DDL_DRIVES)hwndList = CreateWindow(TEXT("listbox"), NULL, WS_CHILDWINDOW | WS_VISIBLE | LBS_STANDARD, cxChar, cyChar * 3, cxChar * 13 + GetSystemMetrics(SM_CXVSCROLL), cyChar * 10, hWnd, (HMENU)ID_LIST, (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE), NULL);SendMessage(hwndList, LB_DIR, DIRATTR, (LPARAM)TEXT("*.*"));上面的代碼是我從一本書上面的樣例代碼直接扒下來的= =!。然后來說一下SendMessage函數在這種情況下要怎么用,第一個參數是列表框的窗口句柄,從CreateWindow函數返回;第二個參數是LB_DIR消息,第三個參數wParam指出要被加入到列表框的文件或者目錄的屬性,
| DDL_ARCHIVE | 包含檔案文件 |
| DDL_DIRECTORY | 包含子目錄,子目錄名稱在方括號 [ ] 中包含 |
| DDL_DRIVES | 包含所有驅動器,也就是磁盤,磁盤以 [-X-] 這樣的形式被列出,如 [-C-] 表示c盤 |
| DDL_EXCLUSIVE | 包含指定屬性的可執行文件,默認情況下,即使DDL_READWRITE沒有指定也會顯示read/write屬性的文件 |
| DDL_HIDDEN | 包含隱藏文件 |
| DDL_READONLY | 包含只讀文件 |
| DDL_READWRITE | 包含只有讀寫屬性的文件,這是默認選項 |
| DDL_SYSTEM | 包含系統文件 |
除了以上介紹的,這個列表框還會顯示一個 [..] 選項,這個選項的意思是返回上一層。
以上便是本文的全部內容,歡迎指出不對的地方,歡迎評論,共同學習,共同進步。
新聞熱點
疑難解答