![]() |
|
Модераторы: Akina |
![]()
|
|
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Привет.
Сижу решаю такую задачу: Есть главная форма, справа вплотную к ней прилеплена ещё одна форма (назовём её вспомогательной). При изменении размера главной формы я могу передвинуть вспомогательную опять вплотную к главной. При этом при необходимости изменяю размер самой вспомогательной формы на тот, который мне нужно. А вот отловить событие перемещения главной формы мне пока слабо. Кто-нибудь решал подобное? ЗЫ. Прикольно иногда получается: Двигаю главную форму, вспомогательная форма при этом остаётся болтаться где-то на экране. Затем чуть-чуть изменяю размер главной формы, и "ОП!" - вспомогательная форма прыгнула на нужное место... Дурдом! |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Мнится мне, в бейсике это событие поймать нелегко. Если только хук ставить...
Вариант - таймер на вспомогательной форме, через каждые эн миллисекунд проверяющий положение главной и при необходимости подтаскивающий вспомогательную куда надо. |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Вариант с таймером - дело понятное... Уже продумывал.
Но, всё равно, спасибо!!! Только не хочется мне таймер вешать... Хук ставить... Как ты это видишь? (Дело в том, что с хуками я ещё не работал). |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Таймер, отслеживающий перемещение основной формы, должен быть НА ОСНОВНОЙ ФОРМЕ. А фаrn перемещения должен фиксироваться в глобальных переменных, чтобы дочерняя форма могла увидеть изменение координат и размеров и подстроиться под них.
Сохраняйте логику - каждый объект отвечает только за себя. Кстати, использование таймера есть вполне разумное решение. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Посмотри справку по функции SetWindowHookEx. И по addressOf. В бейсике я хуки тоже никогда не ставил. Сейчас торкнулся попробовать и чую, что дело это весьма проблемное. Совет: сделай пока через таймер (пусть и некрасиво), и читай про хуки.
|
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Тут я нашёл ссылку по использованию сабклассинга...
Говорят его можно использовать для отлавливания перемещения формы. Только у меня ничегошеньки пока не выходит. Начинаю думать, что копаю не в ту сторону... Наверное придётся остановиться на варианте с таймером... |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 10 Всего: 68 |
Ну почему же не в ту....Как раз именно туда ты капаешь, только в конце все равно упрешся в перехват какого нить WM_MOVE при помощи хука. Хотя для сабклассинга есть спецовые компоненты, как раз для вб ТУТ Но ИМХО овчинка выделки не стоит. |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Ну, уж нет!!! Теперь стратегия на стратегию попёрла!!! Теперь или он (VB) победит , или я. Выходные перестают казаться томными... |
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Ну-с... Ребята!!!
Решил я это дело!!! Рассказываю алгоритм. 1. Иду по адресу http://www.softcircuits.com/ 2. Там заходим в раздел "Download Free Software" 3. Потом в "Programming Tools and Libraries" 4. Скачиваем архив с именем "subcls32.zip" (43.6KB) 5. Куда-нибудь всё это дело распаковываем. 6. Файл Subclass.ocx я бросил в папку "System32". 7. Запускаем VB. 8. Заходим "Project/Components" 9. Добавляем компонент "SoftCircuits Subclass Control" (Или добавляем его при помощи кнопки "Browse") 10. На форму кидаем новый появившийся контрол 11. Кидаем в форму текст, который я набросал ниже...
12. Запускаем проект и если мы не сделали ни одной ошибки, то радуемся жизни!!! Ну! Вопросы ещё есть? ЗЫ. Архив с контролом содержит в себе и исходный текст, и несколько примеров... Так что кому не лень, могут и сами поразбираться... ЗЗЫ. В архивчике мой исходничек... Это сообщение отредактировал(а) mihanik - 7.7.2006, 09:51 Присоединённый файл ( Кол-во скачиваний: 7 )
Form.Move.rar 1,47 Kb |
|||
|
||||
| ~FoX~ |
|
|||
![]() НЕ рыжий!!! ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2819 Регистрация: 8.10.2003 Где: Зеленоград Репутация: 10 Всего: 68 |
mihanik, Ну вобщем то молодец, только ИМХО такие вещи нужно реализовывать без превлечения сторонних компанентов. Рекомендую использовать часть исходника объекта. Во первых перенести все функции в отдельный модуль. Во вторых избавиться от лишних наворотов, как например возможность ставить несколько хуков, в твоей задаче это не понадобиться. Но это только мое ИМХО.
|
|||
|
||||
| mihanik |
|
|||
![]() -=Белый Медведь=- ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 4054 Регистрация: 24.4.2006 Где: г. Тверь Репутация: 11 Всего: 109 |
Ну, дык, - это естесственно!!! Кто ж спорит! Я с исходником уже вожусь... Интересно, блин!!! Определил уже те ошибки, которые допускал вчера... Короче! Для изучения подходит, а уж дальше.... Это сообщение отредактировал(а) mihanik - 7.7.2006, 11:58 |
|||
|
||||
| Тутанхамец |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 612 Регистрация: 10.10.2005 Где: в пирамидЕ! Репутация: 4 Всего: 6 |
Упертый ты тип
P.S. В хорошем смысле. P.P.S. Хотел написать кое-чего, но, оказывается, это уже написал FOX. |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |