# FileFilterControl

Функция `FileFilterControl` позволяет управлять созданием и применением файловых фильтров.

    intptr_t WINAPI FileFilterControl(
      HANDLE hHandle,
      enum FAR_FILE_FILTER_CONTROL_COMMANDS Command,
      intptr_t Param1,
      void *Param2
    );

### Параметры

hHandle
Смотрите описание `Command`.
Command
Может быть одним из следующих значений (перечисление FAR_FILE_FILTER_CONTROL_COMMANDS):

Команда | Описание
--- | ---
FFCTL_CREATEFILEFILTER | Создаёт фильтр для заданной области. `hHandle` должен быть установлен в значение `PANEL_ACTIVE` или `PANEL_PASSIVE`, для фильтра типа `FFT_CUSTOM`, описатель должен быть установлен в значение `PANEL_NONE`. `Param1` в следующее значение (перечисление FAR_FILE_FILTER_TYPE):
Константа | Описание
--- | ---
FFT_PANEL | панель
FFT_FINDFILE | диалог поиска файлов
FFT_COPY | диалог копирования
FFT_SELECT | диалог пометки файлов
FFT_CUSTOM | пользовательская область (для использования плагином)
Созданный фильтр получит настройки заданного типа, настройки глобальны и всегда идентичны в любом фильтре этого типа (но левая и правая панели различаются). `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`, если файл попадает под условия фильтра.

Param1
Указывает на `Параметр1` команды. Смотрите описание `Command`.
Param2
Указывает на `Параметр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);

Смотрите также:
PanelControl