|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
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; } }
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Создание Директория, перечисляющегося в Ящике Списка Single-Selection
Следующий пример демонстрирует как, чтобы отображать содержимое текущего директория в ящике списка и позволять потребителя, чтобы удалять один файл за один раз.
Дополнительно к стилям ящика стандартного списка, этот ящик списка имеет LBS_MULTICOLUMN и стили LBS_HSCROLL. Код инициализирует ящик списка используя функцию DlgDirList, чтобы заполнять списку ящик именами всех файлов в текущем директории. Когда потребитель выбирает кнопку Delete, функция DlgDirSelectEx извлекает имя выбранного файла. Код удаляет файл используя DeleteFile функционирует и корректирует ящик списка директория посылая сообщение LB_DELETESTRING.
#define БУФЕР MAX_PATH /* * ФУНКЦИЯ: DlgDelFileProc(HWND, неподписанный, UINT, ДОЛГО (ДЛИНОЙ)) * * ЦЕЛЬ: диалоговый ящик "Удаляет Файл" */ BOOL APIENTRY DlgDelFileProc( HWND hDlg, /* РУЧКА окна диалогового блока */ сообщение UINT, /* тип сообщения */ UINT wParam, /* сообщеняя-специфическая информация */ ДОЛГО (ДЛИНОЙ) lParam) { DWORD cchCurDir; LPTSTR lpszCurDir; LPTSTR lpszFileToDelete;
int nItem; int nTotal; TCHAR tchBuffer[BUFFER]; BOOL fResult; ключ (сообщение) { случай WM_INITDIALOG: /* * Инициализируйте блока списка заполняя это файлами из * текущий директорий. */ lpszCurDir = tchBuffer; GetCurrentDirectory(cchCurDir, lpszCurDir); DlgDirList(hDlg, lpszCurDir, IDL_FILES, IDS_PATHTOFILL, 0); SetFocus(GetDlgItem(hDlg, IDL_FILES));
обратная ЛОЖЬ; случай WM_COMMAND: ключ (LOWORD(wParam)) { случай IDOK: /* * Когда пользователь нажимает ДЕЛЬ кнопки (IDOK), * удалите выбранный файл. */ lpszFileToDelete = tchBuffer; DlgDirSelectEx(hDlg, lpszFileToDelete, MAX_PATH, IDL_FILES); fResult = DeleteFile(lpszFileToDelete);
если (!fResult) { MessageBox(hDlg, "не Могло удалять файл.", НЕДЕЙСТВИТЕЛЬНЫЙ, MB_OK); } еще { nItem = SendMessage(GetDlgItem(hDlg, IDL_FILES), LB_GETCURSEL, 0, 0); nTotal = SendMessage(GetDlgItem(hDlg, IDL_FILES), LB_DELETESTRING, nItem, 0); /* Скорректируйте список box. */
если (nTotal > nItem) { SendMessage(GetDlgItem(hDlg, IDL_FILES), LB_SETCURSEL, nItem, 0); } еще { SendMessage(GetDlgItem(hDlg, IDL_FILES), LB_SETCURSEL, nTotal, 0); } } возвращайтесь ВЕРНО; случай IDCANCEL:
/* Уничтожьте диалог box. */ EndDialog(hDlg, TRUE); возвращайтесь ВЕРНО; умолчание: обратная ЛОЖЬ; } умолчание: обратная ЛОЖЬ; } }
|
|
|
|
| |