Im folgende Beispiel wird veranschaulicht, wie den Inhalt des aktuellen Verzeichnisses in einem Listenfeld angezeigt und ermöglichen es dem Benutzer, eine Datei zu einem Zeitpunkt zu löschen.
Neben der Standardliste Knotenarten hat dieses Listenfeld die Stile LBS_MULTICOLUMN und LBS_HSCROLL. Der Code initialisiert das Listenfeld mithilfe der DlgDirList -Funktion, um das Listenfeld mit den Namen aller Dateien im aktuellen Verzeichnis zu füllen. Wenn der Benutzer die Schaltfläche " Löschen " auswählt, ruft die DlgDirSelectEx -Funktion den Namen der ausgewählten Datei. Der Code löscht die Datei mithilfe der DeleteFile -Funktion und Updates die Verzeichnisliste durch Senden der Nachricht LB_DELETESTRING box.
#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;
}
}