Creating a Directory Listing in a Single-Selection List Box
The following example demonstrates how to display the content of the current
directory in a list box and enable the user to delete one file at a time.
In addition to the standard list box styles, this list box has the
LBS_MULTICOLUMN and LBS_HSCROLL styles. The code initializes the list box by using the
DlgDirList function to fill the list box with the names of all the files in the current
directory. When the user chooses the Delete button, the
DlgDirSelectEx function retrieves the name of the selected file. The code deletes the file
by using the
DeleteFile function and updates the directory list box by sending the
LB_DELETESTRING message.
#define BUFFER MAX_PATH
/*
* FUNCTION: DlgDelFileProc(HWND, unsigned, UINT, LONG)
*
* PURPOSE: "Delete File" dialog box
*/
BOOL APIENTRY DlgDelFileProc(
HWND hDlg, /* window handle of 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;
}
}
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database