TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

А если вместо tcheight в формулу ставить GetClientRect, сколько пунктов будет?
Или ты меню и заголовок оставляешь?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

А tcheight - и есть высота прямоугольника, который возвращает GetClientRect.

Ага, немного уточнил формулу:

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

int ypos=MulDiv(panel2.bottom-panel1.top-secondDbH+x, pos, 100)-3;
Где secondDbH равен 0, если вторая панель дисков выключена, и её высоте, если она включена, а x - что-то маленькое.

А вообще, похоже, участвуют не высоты самих файловых панелей, а высоты панелей, которые расположены за ними и содержат всякие там комбобоксы, строки состояния и т.п. А их по именам классов не найдёшь... Попробовать по позициям файловых панелей, что ли...
Последний раз редактировалось MVV Вт мар 06, 2012 16:20, всего редактировалось 2 раза.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

А ты не пробовал методом исключений определить высот(а,ы) как(ой,их) панел(и,ей) забирают эти 136 пунктов?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Все. Каждая понемногу. :D

Вот если бы у тотала файловые панели были дочерними по отношению к панелям, содержащим комбобоксы, строки состояния и заголовки путей, эти панели было бы найти проще простого. А так они тупо расположены сзади, и по-человечески их не найдёшь.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Не, такого не может быть. Понемногу на 136 не накопится.
Дай какую-нибудь тестовую тулзу, которая сразу покажет результат аля "136". Подключусь к поиску.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Да легко может быть. Высота клиентской части окна 515, верхняя граница верхней панели идет на уровне 119, нижняя граница нижней - на уровне 444. Имеем вообще 515-(444-119)=190. И это можно проверить любой утилитой, которая может показывать инфу об окнах (у меня WinScanner).

А утилит тестовых тут быть не может. Если бы я мог получать эти 136, я бы мог получать и остальное, и это было бы не нужно. Но у меня задача - определить позицию сепаратора как можно более простым методом, без поиска десятка дочерних окон.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):верхняя граница верхней панели
Это что? Её расстояние от верхней границы экрана?
MVV писал(а):И это можно проверить любой утилитой, которая может показывать инфу об окнах (у меня WinScanner).
Как проверить я в курсе, у меня таких утилит...
MVV писал(а):без поиска десятка дочерних окон
Так я хочу и найти простой способ. Только я так и не понял, как ты 136 получаешь.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher писал(а):
MVV писал(а):верхняя граница верхней панели
Это что? Её расстояние от верхней границы экрана?
Это её относительные координаты (относительно левого верхнего угла окна тотала, точнее его клиентской области).

Ну, 136 я получаю во время отладки тотала, смотрю реальные числа, которые тотал передает функции MulDiv. Он передаёт 377 при высоте клиентской области 515, разница равна 138. Если отнять высоту сепаратора (ещё вопрос, надо ли), получим 136.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):Он передаёт 377 при высоте клиентской области 515, разница равна 138.
Тогда я ничего не понимаю. Ты же пишешь, что не можешь получить 136. Что тебе мешает от высоты клиенткой области отнимать переданные аля "377"?
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Flasher писал(а):
MVV писал(а):Он передаёт 377 при высоте клиентской области 515, разница равна 138.
Тогда я ничего не понимаю.
Именно. :D
Flasher писал(а):Ты же пишешь, что не можешь получить 136. Что тебе мешает от высоты клиенткой области отнимать переданные аля "377"?
А кому он передаёт эти 377? Он передаёт их функции MulDiv, а не мне, и эти самые 377 - как раз моя главная цель. Мне надо получить либо 377 явно, либо получить 138 и отнять их от 515 (высота клиентской области окна), чтобы получить те самые 377.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV писал(а):надо получить либо 377 явно
Напиши конкретно, как получить неявно. Мне всё равно.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Да в том и вопрос, как их получить. Явно, не явно - неважно, главное - получить. Я пока не знаю. Тотал их как-то получает, раз передаёт функции.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ты меня запутал. Ты пишешь
MVV писал(а):Ну, 136 я получаю во время отладки тотала, смотрю реальные числа, которые тотал передает функции MulDiv. Он передаёт 377 при высоте клиентской области 515
Вот это мне и надо.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Пожалуйста. Берёшь отладчик (или дизассемблер), включаешь отладку (или подключаешься к запущенному процессу), ставишь точку останова на вызов MulDiv и смотришь, что в регистрах. Не думаю, что этот вариант тебя устроит.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Давай упростим. Win7, тема '98, окно 800x600, включены все элементы. Какое число вместо 136?
Ответить