Страница 51 из 130
Добавлено: Вт мар 06, 2012 16:01
Flasher
А если вместо tcheight в формулу ставить GetClientRect, сколько пунктов будет?
Или ты меню и заголовок оставляешь?
Добавлено: Вт мар 06, 2012 16:07
MVV
А
tcheight - и есть высота прямоугольника, который возвращает
GetClientRect.
Ага, немного уточнил формулу:
Код: Выделить всё
int ypos=MulDiv(panel2.bottom-panel1.top-secondDbH+x, pos, 100)-3;
Где
secondDbH равен
0, если вторая панель дисков выключена, и её высоте, если она включена, а
x - что-то маленькое.
А вообще, похоже, участвуют не высоты самих файловых панелей, а высоты панелей, которые расположены за ними и содержат всякие там комбобоксы, строки состояния и т.п. А их по именам классов не найдёшь... Попробовать по позициям файловых панелей, что ли...
Добавлено: Вт мар 06, 2012 16:11
Flasher
А ты не пробовал методом исключений определить высот(а,ы) как(ой,их) панел(и,ей) забирают эти 136 пунктов?
Добавлено: Вт мар 06, 2012 16:24
MVV
Все. Каждая понемногу.
Вот если бы у тотала файловые панели были дочерними по отношению к панелям, содержащим комбобоксы, строки состояния и заголовки путей, эти панели было бы найти проще простого. А так они тупо расположены сзади, и по-человечески их не найдёшь.
Добавлено: Вт мар 06, 2012 16:34
Flasher
Не, такого не может быть. Понемногу на 136 не накопится.
Дай какую-нибудь тестовую тулзу, которая сразу покажет результат аля "136". Подключусь к поиску.
Добавлено: Вт мар 06, 2012 16:57
MVV
Да легко может быть. Высота клиентской части окна 515, верхняя граница верхней панели идет на уровне 119, нижняя граница нижней - на уровне 444. Имеем вообще 515-(444-119)=190. И это можно проверить любой утилитой, которая может показывать инфу об окнах (у меня WinScanner).
А утилит тестовых тут быть не может. Если бы я мог получать эти 136, я бы мог получать и остальное, и это было бы не нужно. Но у меня задача - определить позицию сепаратора как можно более простым методом, без поиска десятка дочерних окон.
Добавлено: Вт мар 06, 2012 17:26
Flasher
MVV писал(а):верхняя граница верхней панели
Это что? Её расстояние от верхней границы экрана?
MVV писал(а):И это можно проверить любой утилитой, которая может показывать инфу об окнах (у меня WinScanner).
Как проверить я в курсе, у меня таких утилит...
MVV писал(а):без поиска десятка дочерних окон
Так я хочу и найти простой способ. Только я так и не понял, как ты 136 получаешь.
Добавлено: Вт мар 06, 2012 18:30
MVV
Flasher писал(а):MVV писал(а):верхняя граница верхней панели
Это что? Её расстояние от верхней границы экрана?
Это её относительные координаты (относительно левого верхнего угла окна тотала, точнее его клиентской области).
Ну,
136 я получаю во время отладки тотала, смотрю реальные числа, которые тотал передает функции
MulDiv. Он передаёт
377 при высоте клиентской области
515, разница равна
138. Если отнять высоту сепаратора (ещё вопрос, надо ли), получим
136.
Добавлено: Вт мар 06, 2012 21:57
Flasher
MVV писал(а):Он передаёт 377 при высоте клиентской области 515, разница равна 138.
Тогда я ничего не понимаю. Ты же пишешь, что не можешь получить 136. Что тебе мешает от высоты клиенткой области отнимать переданные аля "377"?
Добавлено: Ср мар 07, 2012 10:36
MVV
Flasher писал(а):MVV писал(а):Он передаёт 377 при высоте клиентской области 515, разница равна 138.
Тогда я ничего не понимаю.
Именно.
Flasher писал(а):Ты же пишешь, что не можешь получить 136. Что тебе мешает от высоты клиенткой области отнимать переданные аля "377"?
А кому он передаёт эти 377? Он передаёт их функции
MulDiv, а не мне, и эти самые 377 - как раз моя главная цель. Мне надо получить либо 377 явно, либо получить 138 и отнять их от 515 (высота клиентской области окна), чтобы получить те самые 377.
Добавлено: Ср мар 07, 2012 10:39
Flasher
MVV писал(а):надо получить либо 377 явно
Напиши конкретно, как получить неявно. Мне всё равно.
Добавлено: Ср мар 07, 2012 13:44
MVV
Да в том и вопрос, как их получить. Явно, не явно - неважно, главное - получить. Я пока не знаю. Тотал их как-то получает, раз передаёт функции.
Добавлено: Ср мар 07, 2012 13:56
Flasher
Ты меня запутал. Ты пишешь
MVV писал(а):Ну, 136 я получаю во время отладки тотала, смотрю реальные числа, которые тотал передает функции MulDiv. Он передаёт 377 при высоте клиентской области 515
Вот это мне и надо.
Добавлено: Ср мар 07, 2012 14:31
MVV
Пожалуйста. Берёшь отладчик (или дизассемблер), включаешь отладку (или подключаешься к запущенному процессу), ставишь точку останова на вызов MulDiv и смотришь, что в регистрах. Не думаю, что этот вариант тебя устроит.
Добавлено: Ср мар 07, 2012 14:41
Flasher
Давай упростим. Win7, тема '98, окно 800x600, включены все элементы. Какое число вместо 136?