|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
|
Как отключить правую кнопку мыши?29.05.2021, 20:30. Показов 4089. Ответов 28
Доброго дня. Подскажите плиз, как отключить правую клавишу мыши, чтобы по нажатию ничего не происходило и не вылазило контекстное меню? Есть форма (VB 6.0), у нее два текстбокса, но полагаю, что отключить нужно для всей формы - клавиша как таковая не нужна и использоваться не будет. Я в программировании новичок. Думал, что там просто делается, но оказалось, что это гораздо сложнее, чем просто программировать поведение клавиатуры, типа If KeyCode и поехали..
0
|
|
| 29.05.2021, 20:30 | |
|
Ответы с готовыми решениями:
28
Как отключить кнопку в тулбаре? "Запихнуть" процедуру на правую кнопку мыши. Как отключить правую кнопку мыши |
|
|
|||||||
| 29.05.2021, 21:17 | |||||||
|
Найдено в поисковике:
2
|
|||||||
|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
|
| 29.05.2021, 21:40 [ТС] | |
|
Круто. Я видел примерно такой код, только для другого языка, не VB.. не помню, на Си наверное.
Но все-таки, этот код отключает как я понял контекстное меню, а не блокирует кнопку. Неужели просто заблокировать кнопку сложнее, чем использовать все эти штуки со скрытыми объектами на форме и т.д.? Но в любом случае thanks!
0
|
|
|
|
|||||||
| 29.05.2021, 22:12 | |||||||
1
|
|||||||
|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
||
| 30.05.2021, 04:50 [ТС] | ||
|
- текст становится серым? Если бы этого эффекта можно было избежать было бы значительно лучше. Но это вероятно не особо возможно... если уж заблокировать кнопку как я понимаю сложно (хотя мне как новичку это кажется невероятным - что можно было не предусмотреть при разработке IDE такие простые вещи, несмотря на такое кол-во сервиспаков), то это наверное и подавно. Кроме этого, я честно говоря не совсем понимаю какое событие использовать для включения поля. В моем случае например только два поля ввода и только одно включено в зависимости от выбранного режима. Ловить с помощью API клики мыши по выключенному серому полю? Пока (несмотря на вполне очевидные неудобства) первый вариант кажется предпочтительным... хотя конечно хотелось бы хотя бы понять, что не так с этой чертовой кнопкой, что ее не отключить.. или в этом виновата винда, а не VB и я зря "ругаюсь" на него? Впрочем, мне кажется, что при обсуждении такого же вопроса на других языках, какие-то решения находились или я уже что-то путаю... UPDATE: кажется я нашел решение (в интернете естественно). по-крайней мере очень похоже на решение. сейчас проверяю. позже напишу, хотя там (если бы я был поумнее) видимо можно сделать еще проще и писать меньше строк кода.
0
|
||
|
|
|||
| 30.05.2021, 10:26 | |||
|
В любом случае, надо городить огород.
0
|
|||
|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
|
| 30.05.2021, 22:17 [ТС] | |
|
Так ведь SP6 был..
В общем, решение я нашел. Правда там тоже есть нюансы. Мне кажется, что здесь могли бы люди малость код допилить капельку - потому что проблема потенциально такая: если у человека один текстбокс или два-три, то и проблемы наверное нет, но если предположить, что у кого-то их много - тогда проблема есть - потому что тупо повторять один и тот же код для всех текстбоксов не комильфо, а для всей формы он не работает. Это с другого форума, я бы дал ссылку, чтобы Вы сами прочитали, но не знаю модераторы разрешат или нет? Второй момент в том, что другой человек ругался на этот код, в том смысле, что можно было сделать еще проще.. хотелось бы с этим моментом разобраться, но мне самому это пока тяжело (я же новичок).. я под себя лишь в одном месте переделал, чуть позже код выложу, как делается.. сейчас просто времени нет. Добавлено через 4 часа 21 минуту Pro_grammer, не нашел тут личных сообщений.. Можно здесь ссылку публиковать на другой форум? (вроде не реклама)
0
|
|
|
|
||
| 30.05.2021, 22:27 | ||
|
Правила форума вверху страницы: https://www.cyberforum.ru/visu... ment3.html "Запрещено публиковать ссылки на другие форумы, а также их пропаганда. Публикация ссылок на форумы допустима только в разделе "Готовые движки, cms и форумы" для решения технических проблем и с предварительного одобрения администрации."
0
|
||
|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
||||||||||||
| 31.05.2021, 00:06 [ТС] | ||||||||||||
|
код искал, что типа переменные и (или) функции объявленные в модуле всегда публичные? И вообще что-то типа о том, что в модуле можно объявить то, что нельзя объявить в форме, например свои типы? Что из этого правильно, а что нет? Ну а вот, собственно решение, как я под себя сделал: 1. Добавляем к проекту модуль. В коде модуля пишем:
а не копировать их по количеству текстбоксов? В этом смысле - вопрос к Argus19 - вы как-то делали свои текстбоксы с одним именем Text1 + индексы - может ли в данном случае это дать преимущество или нет?! У меня например нет уверенности, что можно в Form_Load() корректно сделать обращение к функции (которая у нас в модуле), через цикл, чтобы это не привело к зависанию или всяким другим бякам? В общем суть в том, что хотелось бы этот код допилить в плане - одной функции для всех текстбоксов (если конечно кнопку надо выключить у всех разумеется).. Если народ с этим поможет, то будет отличное на мой взгляд решение, гораздо лучше чем "городить огород".. хотя на вкус и цвет.. а модераторы смогут пометить это как вариант ответа для следующих, кто будет искать тоже самое.. Еще я бы рекомендовал (раз уж нельзя ссылку давать) найти по тексту эту тему в поисковике самостоятельно - там важен как раз не приведенный код - а то, что другой человек говорил/предлагал, что можно сделать еще проще.. и его вариант возможно сработал бы для всей формы целиком (в смысле для всех ее текстовых полей). Вторую часть кода нельзя писать нигде, кроме процедуры Form_Load() - это вызывает падение IDE или ошибку "Out of space stack" - не уверен, что правильно понимаю почему так происходит?.. но видимо VB тогда не понимает какое из окон он должен подменить и что-то в этом роде..
0
|
||||||||||||
|
|
|||||||||
| 31.05.2021, 00:42 | |||||||||
|
Если в модуле есть публичные процедуры, то переменные и декларации библиотечных функций для них могут быть приватными.
OldWindowProc1 имеет тип Variant, которая занимает кучу места. Константа Public Const GWL_WNDPROC = -4& то же.Form_Load() возникает первым, до появления формы.
1
|
|||||||||
|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
||
| 31.05.2021, 01:06 [ТС] | ||
указывают тип - ни разу не встречал вроде.. как надо было? Первое уже сам понял. А вот с последним не понял совсем, что Вы имели ввиду? Т.е. да, возникает до формы и что из этого.. не врублюсь. Добавлено через 11 минут Кажется врубился.. т.е. поскольку форма еще не загрузилась, то можно безболезненно использовать цикл. Странно, но у меня в памяти какая-то бяка.. в общем что-то висло или падало когда я что-то такое делал, но точно не помню уже. Тогда получается надо OldWindowProc объявлять как массив.. и через For - правильно я понимаю? Можно попробовать, но результат может быть непредсказуемым, особенно если что-то напутать.)))
0
|
||
|
|
||||||||||||||
| 31.05.2021, 01:20 | ||||||||||||||
Добавлено через 12 минут Есть замечательная функция Debug.Print hWnd. Поставьте её сразу после входа в обе функции
Это даст направление для дальнейших размышлений.
0
|
||||||||||||||
|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
||
| 31.05.2021, 01:25 [ТС] | ||
|
Действительно, можно объявить GWL_WNDPROC и WM_RBUTTONDOWN как Integer хотя мне кажется
погоды это не сделает, но работает. А на счет "Public OldWindowProc1 As Long, OldWindowProc2 As Long".. вроде же когда мы пишем Dim a, b, c As Long - то тип применяется ко всем перечисленным через запятую переменным - с Public разве не аналогично? Добавлено через 3 минуты
судить по тому, какое решение Вы предложили в начале - или код чем-то не устраивает?
0
|
||
|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
|
| 31.05.2021, 01:48 [ТС] | |
|
Да не.. все там нормально с "Public OldWindowProc1, OldWindowProc2 As Long" - спецом
решил проверить, что отвечает первая переменная - тип лонг - все ок. Спокойно пишем через запятую и не паримся. MsgBox TypeName(OldWindowProc1) Добавлено через 12 минут В процедуре Activate можно размещать.. не глючит. Ваша правда. Ладно.. посплю, а потом допилю.) Гуд найт.
0
|
|
|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
||||||
| 31.05.2021, 18:24 [ТС] | ||||||
|
Пардон. Я про выход забыл.. там был код для выхода, я его забыл написать. Там просто человек блокировал вообще
мышь целиком, поэтому ему для выхода нужно было включать ее обратно. У меня поскольку только правая кнопка блокируется, то я так думаю, что мне ничего для выхода не нужно. Кнопка то работает. Зачем что-то придумывать. Добавлено через 17 минут А на счет массива текстовых полей мне подумалось, что все-таки называть их одинаково и делать из этого массив не всегда удобно. У человека могут текстбоксы называться например по их функциональному значению в проекте. Я думаю может можно применять что-то типа: Dim box() As Object box = Array(... перечисляем названия наших текстовых полей) Потом обращаемся к ним по индексу в массиве: box(0). Еще не пробовал, но идея думаю ясна. Так ведь тоже наверное можно сделать? Вот тот фрагмент, который я забыл добавить:
Посмотрел - действительно все может работать через одну функцию.. единственное я не врубился что это такое у меня внизу окно быстрого выполнения в самой IDE какие-то циферки пишет - не понял что оно показывает? Согласитесь, метод действенный, причем легко заблокировать мышь совсем для какого-нибудь окна. Добавлено через 7 минут Если надо полностью мышь блокировать, то лучше разобрать вот это: (что писал тот чел) "Если ты возвращаешь в обработчике WM_NCHITTEST значение HTTRANSPARENT, то Винда считает, что данное окно не хочет обрабатывать мышиные сообщения и шлёт эти сообщения в родителя, а не в Control." Но код он приводил не для бейсика.. как его на бейсике применять я еще не разбирался: UINT CNoMouseEdit::OnNcHitTest(CPoint point) { return HTTRANSPARENT; } Не знаю какой это язык, поэтому привожу без форматирования.
0
|
||||||
|
|
|||||||
| 31.05.2021, 18:28 | |||||||
NoPopupWindowProc при наведение на него мыши. Видно, что цифры меняются при наведении мыши на разные TextBox. Т.е. видно, что функция отрабатывает 4 TextBox.И это окно для вывода отладочной информации. Обычно, рядом с TextBox ставится Label, в которую записано что именно вводить. Программист знает за что отвечает каждый TextBox. Пользователю это не нужно. Ему надо знать, что вводить в текстовое поле.
0
|
|||||||
|
0 / 0 / 0
Регистрация: 29.05.2021
Сообщений: 28
|
|
| 31.05.2021, 18:49 [ТС] | |
|
Понятно. Ну я видимо иду своим путем. Путем минимализма. Стараюсь не размещать на форме лишних объектов, поэтому
предпочитаю прямое именование, а не лэйблы. Будет время - попробую создать массив из объектов как писал. Только Array(... это наверное откуда-то из другого, может с vbs спутал.
0
|
|
|
|
|||
| 31.05.2021, 19:00 | |||
|
Сделал расширенный пример.
0
|
|||
| 31.05.2021, 19:00 | |
|
Помогаю со студенческими работами здесь
20
Как програмно отключить правую кнопку мыши? Как заблокировать правую кнопку мыши? Как реализовать выпадающее меню по нажатию на правую кнопку мыши?
Включить правую кнопку мыши на сайте Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|