FileFilterControl позволяет управлять созданием и применением файловых фильтров.
intptr_t WINAPI FileFilterControl( HANDLE hHandle, enum FAR_FILE_FILTER_CONTROL_COMMANDS Command, intptr_t Param1, void *Param2 );
Command.| Команда | Описание | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| FFCTL_CREATEFILEFILTER | Создаёт фильтр для заданной области.hHandle должен быть установлен в значение PANEL_ACTIVE или PANEL_PASSIVE,для фильтра типа FFT_CUSTOM, описатель должен быть установлен в значение PANEL_NONE.Param1 в следующее значение (перечисление FAR_FILE_FILTER_TYPE):
Param2 - указатель типа HANDLE, в который запишется созданный описатель фильтра. Функция при неудаче вернёт FALSE. | ||||||||||||
| FFCTL_FREEFILEFILTER | Освобождает память занятую при создании фильтра.hHandle - описатель фильтра, созданный по команде FFCTL_CREATEFILEFILTER.Param1 и Param2 игнорируются. Функция возвращает TRUE. | ||||||||||||
| FFCTL_OPENFILTERSMENU | Открывает меню с параметрами фильтра для заданной области.hHandle - описатель фильтра, созданный по команде FFCTL_CREATEFILEFILTER.Param1 и Param2 игнорируются.Функция возвращает TRUE. | ||||||||||||
| FFCTL_STARTINGTOFILTER | Обновить параметр "текущее время", который используется для сравнения относительных дат.hHandle - описатель фильтра, созданный по команде FFCTL_CREATEFILEFILTER.Param1 и Param2 игнорируются.Вызов этой команды надо делать до начала операции фильтрования, для того чтобы правильно работали фильтры с относительной датой. Функция возвращает TRUE. | ||||||||||||
| FFCTL_ISFILEINFILTER | Сравнивает файл с параметрами фильтра.hHandle - описатель фильтра, созданный по команде FFCTL_CREATEFILEFILTER.Param1 игнорируются. Param2 указатель на файловый объект (структура PluginPanelItem), который нужно проверить на включение в фильтр. Функция возвращает TRUE, если файл попадает под условия фильтра. |
Параметр1 команды. Смотрите описание Command.Параметр2 команды. Смотрите описание Command.Command
HANDLE AFilter = INVALID_HANDLE_VALUE;
// создаём фильтр для области "активная панель"
Info.FileFilterControl(PANEL_ACTIVE,FFCTL_CREATEFILEFILTER,FFT_PANEL,&AFilter);
// обновляем параметр "текущее время"
Info.FileFilterControl(AFilter,FFCTL_STARTINGTOFILTER,0,0);
if (AFilter != INVALID_HANDLE_VALUE)
{
// производим манипуляции с элементами панели
for (int i=0; i < pInfo->ItemsNumber; i++)
{
//...применяем фильтр, например, так
if (Info.FileFilterControl(AFilter,FFCTL_ISFILEINFILTER,0,(void*)&pInfo->PanelItems[i]))
{
// элемент попал под условия фильтра
// обработаем элемент...
}
}
}
// освобождаем память
Info.FileFilterControl(AFilter, FFCTL_FREEFILEFILTER,0,0);