Страница 17 из 130

Добавлено: Чт ноя 18, 2010 07:12
MVV
Flasher в теме про Autorun писал(а):
MVV писал(а): но если вы мне поясните, какое отношение имеет функция удаления ключей INI к переключению тотала в полноэкранный режим
К переключению ТС в полноэкранный режим эта функция никакого отношения не имеет, как и ряд других
функций/команд ТСFS2. Так что и объяснять нечего. :)
Хотелось бы с этого места поподробнее. Просмотрел весь список функций TCFS2, но так и не нашел ничего лишнего.

Код: Выделить всё

; Встроенные функции и параметры:
;
; 0
; 1
; show(<state>)
; move([<x>], [<y>], [<cx>], [<cy>], [<topmost>])
; set_style([<value>], [<exvalue>])
; set_separator(<value>)
; msg(<umsg>, <wparam>, <lparam>, [<post>])
; tcm(<cm_index>)
; run_item(<item_name>)
; run_action(<action_name>)
; set_tcini(<section>, <key>, <value>, <error_value>)
; save_undo(<undo_name>)
; delay(<msec>)
;
; style([<value>], [<exvalue>])
; tcini(<section>, <key>, <value>, <error_value>)
Или по пунктам пояснить, для чего при переключении в полноэкранный режим та или иная функция? show, move, set_style, msg - для управления окном, tcm - для удобного вызова команд ТК для включения/отключения элементов интерфейса, set_tcini - для изменения параметров INI (например, для увеличения размера кнопок панели инструментов в полноэкранном режиме), run_item, run_action, save_undo - служебные, delay - для добавления задержек между операциями, 0, 1, style, tcini - для условного выполнения других функций и команд. А то, что у каждого в INI - уже его личные извращения, которые, да, могут и не иметь отношения к переключению ТК в полноэкранный режим. :)

Единственная функция, которая тут не совсем к месту - set_separator. Но думаю, что ты тут не посмеешь согласиться со мной, т.к. сам был инициатором её добавления. :D

Добавлено: Чт ноя 18, 2010 07:51
Flasher
MVV писал(а):Просмотрел весь список функций TCFS2, но так и не нашел ничего лишнего.
Лишнего я там тем более не нашёл. Только речь шла именно о полноэкранном режиме. А вот запрошенный список:

разворачивание/восстановление окна;
перемещение и изменение размера;
выбор отключаемых элементов;
выполнение инверсных команд отображения элементов окна;
отправка оконных сообщений;
модификация числовых значений ключей ini;
переключение строки главного меню;
открытие главное меню в виде всплывающего;
изменение окна по краям при задании абсолютных величин экрана;
увеличение/уменьшение размеров кнопок на тулбаре;
перемещение сепаратора.

Добавлено: Чт ноя 18, 2010 08:39
MVV
В каком смысле "запрошенный"? Кем и у кого?

Добавлено: Чт ноя 18, 2010 08:41
Flasher
Ну, это я так условно выразился, не бери в голову. :wink:

Добавлено: Чт ноя 18, 2010 14:41
sa
MVV в теме про Autorun писал(а):
MVV писал(а):какое отношение имеет функция удаления ключей INI к переключению тотала в полноэкранный режим
Рассмотрим такой случай. Кто-то привык при загрузке ТК с помощью Autorun и TCFS2 сразу переключаться в полноэкранный режим (или, наоборот, после полноэкранного режима в обычный), изменяя при этом с помощью TCFS2 кучу “испорченных” (не важно кем и как) в предыдущей сессии установок на привычные для него. В том числе и положение сепаратора, например. После такого вступления, мне кажется, любая запрошенная функция может уже, пусть и с натяжкой, считаться относящейся к TCFS2. Например, удаление ключей ActiveTitleText и InactiveTitleText в секции Colors позволит восстановить "родные" цвета заголовков панелей, а удаление секций […History] позволит очистить списки посещённых папок и т.д.

Добавлено: Чт ноя 18, 2010 23:57
Flasher
sa писал(а): а удаление секций […History] позволит очистить списки посещённых папок
Не позволит.

Добавлено: Сб ноя 20, 2010 12:14
MVV
Нашел простой способ узнать, какая панель активная - правая или левая. Нужно загрузить с помощью Autorun библиотечку, которая сможет это сделать, будучи загруженной в тотал, и вернет результат. :)

Сижу и думаю, добавить функцию в HideMenu или сделать отдельную DLL.

Заодно думаю добавить функцию для проверки значения сепаратора - функционал уже есть, просто нужно отделить часть функции установки сепаратора.

Добавлено: Сб ноя 20, 2010 12:31
Flasher
Хочешь верь, хочешь нет, ровно сегодня утром тебе хотел написать в личку по этой теме, так как думал, что нашёл дескриптор активной панели, потом оказалось, что он с перезагрузкой ТС постоянно обновляется. И вдруг вижу.. :shock: Порадовал-таки. Ожидаемс. :)

P.S.: Hide Menu подойдёт.

Добавлено: Сб ноя 20, 2010 12:51
MVV
Да HideMenu-то подойдет, кто б сомневался. А вот подойдет ли функция к HideMenu по смыслу? :D

А узнать, левая панель или правая, проще простого - находим обе панели, берем окно с фокусом и проверяем, левее ли оно второй панели или нет. :D Но узнать, какая панель с фокусом, можно только из процесса тотала, поэтому нужен плагин.

Добавлено: Сб ноя 20, 2010 13:00
Flasher
MVV писал(а):А вот подойдет ли функция к HideMenu по смыслу? :D
Как насчёт просто переименовать? :)
MVV писал(а):А узнать, левая панель или правая, проще простого - находим обе панели, берем окно с фокусом и проверяем, левее ли оно второй панели или нет. :D
Интересно как? Вот положение курсора понятно как, а панели? :)

Добавлено: Сб ноя 20, 2010 14:04
MVV
Flasher писал(а):
MVV писал(а):А вот подойдет ли функция к HideMenu по смыслу? :D
Как насчёт просто переименовать? :)
Сложно. :)
Flasher писал(а):
MVV писал(а):А узнать, левая панель или правая, проще простого - находим обе панели, берем окно с фокусом и проверяем, левее ли оно второй панели или нет. :D
Интересно как? Вот положение курсора понятно как, а панели? :)
Что именно как? Обе панели являются окнами, у них есть экранные координаты, и по координатам вполне очевидно, какая из панелей левая. Проблема лишь в том, что извне невозможно понять, какая из панелей имеет фокус, т.е. мы знаем, какая панель является левой, но не знаем, имеет ли она фокус. А в пределах процесса тотала задача элементарно решается вызовом функции GetFocus.

Добавлено: Сб ноя 20, 2010 14:13
Flasher
MVV писал(а):Что именно как?
В смысле?
MVV писал(а):Обе панели являются окнами, у них есть экранные координаты, и по координатам вполне очевидно, какая из панелей левая.
Вот я и спрашиваю, где зацепить эти координаты, если окно может смещаться?

Добавлено: Сб ноя 20, 2010 14:48
MVV
Flasher писал(а):Вот я и спрашиваю, где зацепить эти координаты, если окно может смещаться?
Не пойму, в чем проблема. Находишь дескрипторы обеих панелей, потом сразу получаешь экранные координаты панелей функцией GetWindowRect. Всё, пускай окно смещается куда угодно, у тебя уже есть всё необходимое - спокойно сравнивай себе координаты и делай выводы, какой из дескрипторов от левой панели, а какой - от правой.

Добавлено: Сб ноя 20, 2010 15:03
Flasher
MVV
Ну да, координаты-то динамически меняются с изменением положения окна, логично. :)
MVV писал(а):Сложно. :)
Да прям уж. :wink: HM_AP.dll

Добавлено: Сб ноя 20, 2010 21:02
MVV
Не, такое я мутить не буду. :)


Итак, TCFS2 1.5 (изменения после 1.4.2.30): 8)
+ функция separator
+ теперь команды могут принимать до 9 параметров

TCFS2 1.5 на wincmd.ru


Заодно вышел Autorun_HideMenu 1.2, в котором добавилась пара функций для определения активной панели (левой и правой).


Новая команда, устанавливающая ширину активной панели:

Код: Выделить всё

sp_set_active=set_separator(#1), tcm(65551) | set_separator(100-#1)
Примеры вызова:

Код: Выделить всё

TCFS2 /ei "sp_set_active(70)"
TCFS2 /ef "run_item(sp_set_active, 70)"