AnalyseW + OpenW + FCTL_REDRAWPANEL

Место, где разработчики плагинов могут поделиться своим опытом.
Post Reply
User avatar
artemsen
Posts: 752
Joined: Sun 07 Feb, 2010 08:55
Been thanked: 4 times

AnalyseW + OpenW + FCTL_REDRAWPANEL

Post by artemsen »

Ситуация такая:
В ответ на вызов AnalyseW я сообщаю Far'у, что буду открывать файл как архив.
При вызове OpenW обрабатываю файл в соответствии со своей логикой (не эмулируя панель, показываю картинку в плагине ImageView).
После этого хочу установить пометки на файлах активной панели и переместить курсор на нужный элемент, т.е. вызвать AdvControl(FCTL_REDRAWPANEL), но тут у меня начинаются проблемы - файлы помечаются и курсор перемещается, но вернув управление Far'у он (Far) снова обновляет панель теряя мои пометки и позицию курсора. Как оставить сделанные пометки?

Актуально только при открытии через связку AnalyseW + OpenW. При обработке префикса можно смело вернуть INVALID_HANDLE_VALUE, что не приведёт к сбросу панели.

Функция из плагина GetFindDataW не экспортируется, из функции AnalyseW возвращается NULL.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: AnalyseW + OpenW + FCTL_REDRAWPANEL

Post by DrKnS »

При вызове OpenW обрабатываю файл в соответствии со своей логикой (не эмулируя панель, показываю картинку в плагине ImageView).
Я тут посмотрел на

FCTL_REDRAWPANEL тут не при чём, т.к. "return NULL" - это как раз, внезапно, эмулирование панели, ибо:
OpenW wrote:Вы можете использовать эту функцию для реализации плагинов, работающих без создания файловых панелей. Просто выполните все необходимые действия и верните INVALID_HANDLE_VALUE.
Но для OpenFrom == OPEN_ANALYSE возвращать INVALID_HANDLE_VALUE тоже нельзя, т.к. если пользователь закроет картинку по Enter, а плагин скажет INVALID_HANDLE_VALUE, то Enter уйдет дальше и картинка полетит в ShellExecute. Возвращать надо (HANDLE)-2.
User avatar
artemsen
Posts: 752
Joined: Sun 07 Feb, 2010 08:55
Been thanked: 4 times

Re: AnalyseW + OpenW + FCTL_REDRAWPANEL

Post by artemsen »

Спасибо!
С (-2) работает :-)
Post Reply

Return to “Разработка плагинов”