ตัวอย่างต่อไปนี้สาธิตวิธีการแสดงเนื้อหาของไดเรกทอรีปัจจุบันในกล่องรายการ และการเปิดใช้งานผู้ใช้จะลบแฟ้มหนึ่งครั้ง.
ลักษณะมาตรฐานรายการกล่อง กล่องรายการนี้มีลักษณะ LBS_MULTICOLUMN และ LBS_HSCROLL รหัสเริ่มต้นกล่องรายการ โดยใช้ฟังก์ชันDlgDirListเพื่อเติมกล่องรายการ ด้วยชื่อแฟ้มทั้งหมดในไดเรกทอรีปัจจุบัน เมื่อผู้ใช้เลือกปุ่มลบฟังก์ชันDlgDirSelectExดึงข้อมูลชื่อของแฟ้มที่เลือก รหัสลบแฟ้ม โดยใช้การ DeleteFileฟังก์ชันและการปรับปรุงรายการไดเรกทอรีที่กล่อง ด้วยการส่งข้อความLB_DELETESTRING.
#define BUFFER MAX_PATH
BOOL APIENTRY DlgDelFileProc(
HWND hDlg, // window handle to dialog box
UINT message, // type of message
UINT wParam, // message-specific information
LONG lParam)
{
DWORD cchCurDir;
LPTSTR lpszCurDir;
LPTSTR lpszFileToDelete;
int nItem;
int nTotal;
TCHAR tchBuffer[BUFFER];
BOOL fResult;
switch (message)
{
case WM_INITDIALOG:
// Initialize the list box by filling it with files from
// the current directory.
lpszCurDir = tchBuffer;
GetCurrentDirectory(cchCurDir, lpszCurDir);
DlgDirList(hDlg, lpszCurDir, IDL_FILES, IDS_PATHTOFILL, 0);
SetFocus(GetDlgItem(hDlg, IDL_FILES));
return FALSE;
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDOK:
// When the user presses the DEL (IDOK) button,
// delete the selected file.
lpszFileToDelete = tchBuffer;
DlgDirSelectEx(hDlg, lpszFileToDelete, MAX_PATH,
IDL_FILES);
fResult = DeleteFile(lpszFileToDelete);
if (!fResult)
{
MessageBox(hDlg, "Could not delete file.",
NULL, MB_OK);
}
else
{
nItem = SendMessage(GetDlgItem(hDlg,
IDL_FILES), LB_GETCURSEL, 0, 0);
nTotal = SendMessage(GetDlgItem(hDlg,
IDL_FILES), LB_DELETESTRING, nItem, 0);
// Update the list box.
if (nTotal > nItem)
{
SendMessage(GetDlgItem(hDlg, IDL_FILES),
LB_SETCURSEL, nItem, 0);
}
else
{
SendMessage(GetDlgItem(hDlg, IDL_FILES),
LB_SETCURSEL, nTotal, 0);
}
}
return TRUE;
case IDCANCEL:
// Destroy the dialog box.
EndDialog(hDlg, TRUE);
return TRUE;
default:
return FALSE;
}
default:
return FALSE;
}
}