Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
3 / 3 / 0
Регистрация: 15.05.2015
Сообщений: 76

Ограничение зоны перетаскивания форм/окон

21.02.2025, 12:18. Показов 7711. Ответов 60
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Коллеги, добрый день.
Задача такая. Внутри MDIForm есть слева "меню" (безрамочная MDIChild форма), а на "рабочем поле" программы будут открываться разные дочерние окна, которые не должны закрывать собой меню.
Нужно ограничить перемещение остальных дочерних форм влево до ширины "меню".
А также запоминать их положение.

Решить задачу простым методом видимо не вариант, поскольку события "Form_Move" в барсике не предусмотрено, а все остальные типа MouseDown+MouseMove, DragDrop работают только над полем формы, но не над заголовком, за который эта форма перетаскивается.
По ходу пьесы, чтобы всю скатерть предполагаемого кода не дублировать во все формы в программе, было решено основную исполняемую часть поместить в модуль и сделать универсальной для всех форм, с идентификацией форм по hwnd или ещё как...

Я покурил этот вопрос, нашел примеры на API.
Сделал меню всегда поверх остальных (в случае работающего ограничителя это не нужно, но если не получится, то пусть остальные окошки подлазят ПОД меню.)
Но поскольку в API я мало что понимаю, никак не могу адаптировать код перетаскивания под свою задачу.
Оно работает, перетаскивание форм ограничивает. Но хорошо работает только с одной.
Даже при наличии двойного условия If Form1.Visible = True And Form1.Left < 2000 Then формы вылазят все, достаточно только сдвинуть (видимую, одну из) форму ! Менять формам свойство Visible=false тоже бесполезно, они всё равно вылазят.

Запоминание положения я потом доработаю. Переменные WL и WT сделаю массивами и координаты всех форм буду туда распределять.
Сейчас задача разобраться с Function WinProc. Видимо тут засада, а у меня не хватает знаний API. Помогите пжлст

Прикрепил архив проекта.
Вложения
Тип файла: zip 777.zip (4.3 Кб, 13 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.02.2025, 12:18
Ответы с готовыми решениями:

1. Обмен данными с рабочей книгой MS Excel. 2. Проектирование форм окон
1. Для восьми хозяйств известны общий объем валовой продукции (ден.ед) и площадь сельскохозяйственной продукции (га.). Определите Средний...

Ограничение зоны на карте в 2D игре
Всем привет, как сделать ограничение, до красных линий? Как на этой картинке.

Загрузка форм и окон
Если топик создал не в подобающем разделе,прошу заранее прощения,но тема вполне себе актуальная У меня с игроками одного ресурса возник...

60
Модератор
10069 / 3914 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
02.04.2025, 11:30
Студворк — интернет-сервис помощи студентам
MrRoxMJ, вообще меню можно добавлять динамически. Пункт меню - это обычный контрол в vb6. Т.е. делаешь пункт меню со свойством Index = 0, и далее для добавления нового пункта вызываешь Load mnuFrm(nIndex). Перечислить WindowList - это нужно смотреть, в крайнем случае можно через WinApi перечислить.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.04.2025, 11:30

Проектирование форм окон
Дали на самостоятельное изучение, ничего не объяснили. Помогите пожалуйста! Задача; В двух массивах хранятся индивидуальные коды и...

Ограничение инстансов Swing окон
Добрый день, уважаемые коллеги :senor: Не подскажите, как в Swing ограничить кол-во создаваемых инстансов окон, например до 5? ...

Ограничение разворота всех окон
Я не знаю, как это правильно называется. Прошу помочь, как сделать так, чтобы все окна разворачиваясь на весь экран, оставляли внизу...

Ограничение раскрывания окон программ
День добрый всем. Подскажите, как можно замутить такую фишку? Есть программка, представляющая собой вытянутую по верху экрана форму. Как...

Визуальный стиль окон форм
Здравствуйте! Задача: В предшествующих версиях Visual Studio было достаточно трудно заставить приложения отображать их элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
61
Ответ Создать тему
Новые блоги и статьи
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru