Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429

Форма и выдвигающаяся и задвигающаяся по утыканию мыши в правый край экрана

16.09.2024, 19:05. Показов 956. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!
При запуске программы форма почти полность “задвинута“ за правый край экрана и
выступает только на 3 пикселя:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Form_Load()
 
    ' ПОЛУЧИТЬ РАЗМЕР ДЕСКТОПА С УЧЁТОМ ТАСКБАРА
    Call SystemParametersInfo(SPI_GETWORKAREA, 0, DesktopArea, 0)
    '
    DesktopRightEdgeTwp = (DesktopArea.Right - DesktopArea.Left) * Screen.TwipsPerPixelX
    DesktopRightEdgePxl = DesktopRightEdgeTwp / 15
    '
    ' УСТАНАВЛИВАЕМ РАЗМЕРЫ И ПОЛОЖЕНИЕ ФОРМЫ НА ДЕСКТОПЕ
    FrmMain.Move DesktopRightEdgeTwp - 45, 0, 6300, 12690 'в Twip-ах
    IsVisible = False
'
End Sub
При попадании мышки на эти 3 пикселя по прописаному в Form_MouseMove коду форма выдвигается влево на свою полную ширину:

Visual Basic
1
2
3
4
5
6
7
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If IsVisible = False Then
        FrmMain.Move DesktopRightEdgeTwp - 6300, 0, 6300, 12690 'в Twip-ах ’выдвинуть форму
        IsVisible = True
        Hook
    End If
End Sub
Теперь задача чтобы форма опять задвинулась за край экрана при утыкании мыши в правый край экрана. Для этого я использую модуль modHook.bas от The Trick-а. Включается хук и отслеживается координата мыши по горизонтали. Если мышь у края экрана - задвигаем форму и отключаем хук, так как задвинутая форма будет выдвигаться по Form_MouseMove:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
' Процедура перехвата сообщений мыши
Private Function LowLevelMouseProc(ByVal uCode As Long, ByVal wParam As Long, lParam As MSLLHOOKSTRUCT) As Long
     
    If uCode = HC_ACTION Then
        Select Case wParam
               Case WM_MOUSEMOVE
                    If IsVisible And lParam.PT.X = DesktopRightEdgePxl  Then
                       UnHook
                       FrmMain.Move DesktopRightEdgeTwp - 45, 0, 6300, 12690 'в Twip-ах
                       IsVisible = False
                    End If
                '
               End Select
    End If
    
End Function
Но, конечно, это так не работает, поскольку как только форма начинает задвигаться в действие вступает команда выдвинуться, прописанная в Form_MouseMove и, короче, форма дергается туда-сюда и происходит полный пшик (видимо The Trick-у не хватило профессионализма написать нормальный код хукинга! :-))) )

И вот конкретно вопрос: как сделать форму и выдвигающуюся и задвигающуюся по утыканию мыши в правый край экрана?

Спасибо всем кто проявит внимание!
Вложения
Тип файла: zip ClipOrg Forum.zip (8.3 Кб, 8 просмотров)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2024, 19:05
Ответы с готовыми решениями:

Выдвигающаяся/Задвигающаяся боковая панель при нажатии кнопки
Привет! Ребята, есть ли варианты, как как на форме создать выдвигающуюся боковую панельку? Нажимаем на кнопку и панелька выдвигается, а...

Блок уходит за правый край экрана
Подскажите пожалуйста по скрину. Тот блок что я обвёл красной рамкой. Почему он уходит за края? Вся корзина нормальная а он прячется( Уже...

Потемнел правый край экрана ноутбука Acer (сверху и снизу)
Собственно о чем речь. После чистки ноутбука от пыли (причем все происходило бережно, нигде не применялась сила или жесткие инструменты...

11
 Аватар для Mikle Quits
779 / 296 / 17
Регистрация: 21.01.2023
Сообщений: 490
16.09.2024, 19:59
Цитата Сообщение от giaber Посмотреть сообщение
видимо The Trick-у не хватило профессионализма написать нормальный код хукинга!
Надеюсь, это шутка.

Зачем тут хуки вообще, можно же проще:
Вложения
Тип файла: zip FormFlip.zip (1.5 Кб, 13 просмотров)
3
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
16.09.2024, 22:29  [ТС]
Ну конечно же шутка!!! Я же там пририсовал двоеточие и скобочки! The Trick для меня полубог от VB! Он фееричен в самом лучшем смысле этого понятия!
А FormFlip.zip я сейчас же буду пробовать потом отпишусь но в любом случае уже огроменное спасибо вам!

Добавлено через 40 минут
Mikle Quits! Все работает прекрасно, но я виноват — не написал, что хочу обойтись без таймера. Задумана прога, мониторящая клипборд, и текст и картинки, со всякими наворотами, и она постоянно будет активна в фоновом режиме и таймер будет, мне кажется, сильно влиять на общую скорость компа. Или нет?

Кстати, при открытии любого другого окна прога переставала реагировать, но я вставил SetWindowPos Me.hWnd, HWND_TOPMOST (форма on-top) и проблема частично решилась. Частично в том смысле, что если появится другая прога с TOPMOST-ом, то эта перестанет реагировать, у меня например такие две-три в постоянном или частом пользовании.

Но вообще ваш код отличный и, хотя логика у меня была такая же, когда я думал про вариант с таймером, но реализация у меня была бы уродливой, как и всё, что я пытаюсь делать в VB!
БОЛЬШОЕ вам спасибо!
0
Модератор
10057 / 3902 / 884
Регистрация: 22.02.2013
Сообщений: 5,853
Записей в блоге: 79
16.09.2024, 23:39
Лучший ответ Сообщение было отмечено giaber как решение

Решение

https://www.cyberforum.ru/post5079254.html
2
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
17.09.2024, 17:32
Цитата Сообщение от giaber Посмотреть сообщение
про вариант с таймером
Таймер использовать не надо. Можно всё через хук.
0
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
18.09.2024, 05:36  [ТС]
HackerVlad а как именно? Примерно на словах алгоритм не могли бы описать?
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
18.09.2024, 13:37
Цитата Сообщение от giaber Посмотреть сообщение
Примерно на словах алгоритм не могли бы описать?
Я уже писал такую программу, которая отслеживает буфера обмена Windows, без таймера
Цитата Сообщение от giaber Посмотреть сообщение
Задумана прога, мониторящая клипборд
Давайте напишем программу для слежения за буфером и его исправлением при копировании русского текста
1
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
24.09.2024, 22:10  [ТС]
Извините за то, что пропал почти на неделю, но были всякие события семейные и компьютерные. Компьютерные – Windows накрылся, пришлось переустанавливать, но так и не смог установить Visual Basic 6 на эту новую винду. Слава богу нашел в сети портабельную версию с уже установленным AxTools CodeSmart

Несмотря на вашу помощь, вплоть до готовых решений, моё ламерское нутро пытается извернуться и найти отвратительные в своей примитивности решения, и вот я докатился до такого: расположил слева и справа на форме узкие в 5 пикселей Picturebox-ы и логика строится на отслеживании MouseMove на picShow и picHide, ну, из приложенного проекта всё поймете — там всего 8 строчек кода реализовывают задачу.
В приложеном проекте Picturebox-ы цветные для наглядности, в реале они будут под цвет формы и не видны.
Посмотрите и покритикуйте, пожалуйста.
Вложения
Тип файла: zip Cliporg Форум.zip (7.4 Кб, 5 просмотров)
1
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
24.09.2024, 23:15  [ТС]
Очередная непонятка. После установки новой винды не регистрируется Leandro NewTab01.ocx. Винда та же, семерка, система64. На прошлой винде никаких проблем не было а сейчас выдает несовместимость Что можно/нужно сделать?
Миниатюры
Форма и выдвигающаяся и задвигающаяся по утыканию мыши в правый край экрана  
Вложения
Тип файла: zip Leandro NewTab.zip (116.0 Кб, 5 просмотров)
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
25.09.2024, 01:57
Цитата Сообщение от giaber Посмотреть сообщение
отвратительные в своей примитивности решения
Нормальное решение, не отвратительное, я тоже так бы делал.
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
25.09.2024, 04:00
giaber, OCX этот у меня тоже не подключается, нужно обратиться к первоисточнику, к разработчику Leandro

Добавлено через 2 минуты
giaber, Файл "Leandro NewTab.ocx" где вы взяли?

Добавлено через 8 минут
giaber, скорее всего что здесь: https://leandroascierto.com/bl... -para-vb6/
я тоже очень люблю сайт Leandro Ascierto и все его работы для VB6 просто превосходны. Единственный такой сайт любителя VB6 где так много всего прекрасного

Добавлено через 1 минуту
Вот с этого сайта и качайте нормальный релиз который будет работать. Ссылка: https://leandroascierto.com , это официальный его сайт, все права защищены, поэтому ничего копипастить не буду
1
101 / 38 / 0
Регистрация: 16.09.2014
Сообщений: 429
25.09.2024, 07:23  [ТС]
testuser2
Спасибо! немного успокоили.

HackerVlad
Блин! вроде же я с сайта Леандро качал - ан нет как оказалось! Скачал с Гитхаба Леандро и нормально регистрируется! Но всё же непонятки остаются - ведь неделю назад, на предыдущей винде, всё работало!? Ну и бог с ним - главное сейчас заработало. Спасибо за пинок в нужном направлении, HackerVlad !
Леандровское у меня ВСЁ захомячено в запасник на винт!
А Леандро конечно даёт жару! Почти как наш The Trick!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.09.2024, 07:23
Помогаю со студенческими работами здесь

Кнопка вылезает за правый край
<form action="" method="POST" class="dv nob " style="display: flex;"> <input name="title_p" value=""...

Как поместить icon в правый нижний край QPushButton
Не получается поместить иконку Пытался помести через stylesheet background-color: rgb(166, 146, 139); text-align: right bottom; ...

Не могу поставить значки на правый край рабочего стола
После ночного обновления значки сдвинулись вправо и не получается их вернуть к эстетически правильному варианту

При уменьшении экрана браузера блок уходит за левый край экрана
left 50% и margin-left:-width/2 при уменьшении экрана браузера уходит за левый край экрана. как этого избежать?

Почему низ и правый край сцены вылезают за границы видимости?
Почему низ и правый край сцены вылезают за границы видимости? Делаю во флеш билдере


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru