Класс FarCtrl предназначен для выполнения различных операций с файловыми панелями и представляет собой обертку вокруг сервисной функции Control из FAR API. Поскольку эта функция требует передачи в качестве параметра хэндла плагина, этот хэндл хранится в поле экземпляра данного класса.
В плагинах, не создающих своей панели, следует использовать конструктор без параметров этого класса (инициализирующий хэндл значением INVALID_HANDLE_VALUE). Поскольку затраты на конструирование класса минимальны, его можно создавать одновременно с вызовом функции:
FarCtrl().RedrawPanel();
Если вызывается несколько функций, можно создать экземпляр класса на стеке:
FarCtrl ctrl; ctrl.UpdatePanel(); ctrl.RedrawPanel();
В плагинах, создающих свою панель, необходимо передать в класс хэндл плагина. Если класс используется в пределах одной функции, можно воспользоваться конструктором с параметром:
FarCtrl ctrl (this); ctrl.UpdatePanel(); ctrl.RedrawPanel();
Если же класс используется часто, рекомендуется сделать экземпляр этого класса полем класса панели вашего плагина и инициализировать его в конструкторе. Однако, поскольку использование this в списках инициализации недопустимо, такой вариант работать не будет:
MyPanel::MyPanel() : m_ctrl (this) // Это не работает { ...
Вместо этого следует воспользоваться методом SetHandle:
MyPanel::MyPanel() { m_ctrl.SetHandle (this); ...
Класс имеет следующие методы, реализующие подфункции Control:
int ClosePlugin (const char *DestPath);
Эквивалент FCTL_CLOSEPLUGIN. Закрывает панельный плагин и устанавливает на файловой панели путь, переданный в параметре DestPath.
int GetPanelInfo (PanelInfo *pi);
PanelInfo GetPanelInfo();
Эквивалент FCTL_GETPANELINFO. Заполняет структуру PanelInfo информацией о текущей панели.
int GetAnotherPanelInfo (PanelInfo *pi);
PanelInfo GetAnotherPanelInfo();
Эквивалент FCTL_GETANOTHERPANELINFO. Заполняет структуру PanelInfo информацией о пассивной панели.
int UpdatePanel (bool clearSelection = false);
Эквивалент FCTL_UPDATEPANEL. Обновляет содержимое текущей панели и опционально сбрасывает выделение.
int UpdateAnotherPanel (bool clearSelection = false);
Эквивалент FCTL_UPDATEANOTHERPANEL. Обновляет содержимое пассивной панели и опционально сбрасывает выделение.
int RedrawPanel();
Эквивалент FCTL_REDRAWPANEL. Перерисовывает активную панель.
int RedrawAnotherPanel();
Эквивалент FCTL_REDRAWANOTHERPANEL. Перерисовывает пассивную панель.
int SetPanelDir (const char *dir)
Эквивалент FCTL_SETPANELDIR. Устанавливает текущий каталог в активной панели. Если плагин поддерживает свою собственную панель, он будет закрыт после выполнения этой команды
int SetAnotherPanelDir (const char *dir)
Эквивалент FCTL_SETANOTHERPANELDIR. Устанавливает текущий каталог в пассивной панели.
int GetCmdLine (char *buf)
FarString GetCmdLine()
Эквивалент FCTL_GETCMDLINE. Позволяет получить текст командной строки FAR (либо копирует его в указанный буфер, либо возвращает его в виде объекта FarString).
int SetCmdLine (const char *buf)
Эквивалент FCTL_SETCMDLINE. Копирует указанный текст в командную строку FAR.
int InsertCmdLine (const char *buf)
Эквивалент FCTL_INSERTCMDLINE. Вставляет указанный текст в командную строку FAR, начиная с текущей позиции курсора.
int GetCmdLinePos()
Эквивалент FCTL_GETCMDLINEPOS. Возвращает текущую позицию курсора в командной строке.
int SetCmdLinePos (int newPos)
Эквивалент FCTL_SETCMDLINEPOS. Устанавливает курсор в указанную позицию командной строки.
int SetSelection (PanelInfo *pi);
Эквивалент FCTL_SETSELECTION. Устанавливает выделение в активной панели на основании информации, переданной в указанной структуре PanelInfo.
int SetAnotherSelection (PanelInfo *pi);
Эквивалент FCTL_SETANOTHERSELECTION. Устанавливает выделение в пассивной панели на основании информации, переданной в указанной структуре PanelInfo.
int SetUserScreen();
Эквивалент FCTL_SETUSERSCREEN. Копиpует текущее содеpжимое экpана в буфеp пользовательского экрана FAR.
int SetViewMode (int viewMode)
Эквивалент FCTL_SETVIEWMODE. Устанавливает указанный режим просмотра для активной панели (число от 0 до 9).
int SetAnotherViewMode (int viewMode)
Эквивалент FCTL_SETANOTHERVIEWMODE. Устанавливает указанный режим просмотра для пассивной панели (число от 0 до 9).