Как отключить контекстное меню в TextBox'e

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Arro
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 17.12.2002 (Вт) 14:00

Как отключить контекстное меню в TextBox'e

Сообщение Arro » 16.06.2003 (Пн) 13:47

Проблема: хочу присвоить клику правой кнопки мышки по текстбоксу какую-нибудь команду, напр., Text1.Locked, однако постоянно выскакивает контекстная менюшка.

Как бы ее отключить?

basicom
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 20.05.2003 (Вт) 10:10
Откуда: Екатеринбург

Сообщение basicom » 16.06.2003 (Пн) 14:09

попробуй её закомментировать, а вдруг получиться :D

Arro
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 17.12.2002 (Вт) 14:00

Сообщение Arro » 16.06.2003 (Пн) 15:19

Что закомментировать? :?

Наверное я невнятно изложил просьбу. Кликая правой кнопкой на текстбоксе (в run режиме) всегда выскакивает менюшка (copy-paste). Это жутко раздражает, и хотелось бы чтоб она не появлялась. Как этого можно добиться?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.06.2003 (Пн) 15:28

Сабклассингом...
Просто блокируем WM_RBUTTONUP = &H205
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 16.06.2003 (Пн) 15:37

Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = vbRightButton Then
Text1.Enabled = False
End If
End Sub

kazah_
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 13.01.2003 (Пн) 18:37
Откуда: Russia

Сообщение kazah_ » 17.06.2003 (Вт) 1:21

Aleksej писал(а):Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button = vbRightButton Then
Text1.Enabled = False
End If
End Sub

Так ты ее просто заблокируешь, а менбха все равно вылезет. Заччем тогда блокировать?
Mr DEN - THE WAY YOU KNOW / Мр. ДЕН - Ваш Путь к Познанию!

John_mc
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 112
Зарегистрирован: 15.06.2002 (Сб) 6:18
Откуда: Russia, Новосибирск

Сообщение John_mc » 17.06.2003 (Вт) 5:43

Эта тема уже обсуждалась здесь недавно...

Я думаю, что лучше будет использовать Rich Text Box, вместо Text Box - И проблем не будет

Arro
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 17.12.2002 (Вт) 14:00

Сообщение Arro » 17.06.2003 (Вт) 17:43

2Alekej:

Так я уже делал. Чтоб потом включить тексбокс и избежать появление менюшки надо где-то 600 мс подождать, а это уже некрасиво.

2John_mc:

Не хочется за прогой весом 50 кб таскать повсюду контрол

2Gserg:

Спасибо, сабклассингом все получается. Только, если блокировать WM_RBUTTONUP, то мышка почему-то отключается до следующего щелчка, поэтому лучше заблакировать WM_RBUTTONDOWN=&H204 c тем же эффектом, но без этого глюка.

А еще лучше... Я просто отследил все мессаги, которые посылаются форточкам при правом клике текстбокса и попеременно отключая их, кажется, нашел ту, что отвечает как раз за вызов контекстного меню:

Код: Выделить всё
'-------------------------------------------------------------------
'Dec    Hex Win32Api.txt  [Если заблокировать...]
'-------------------------------------------------------------------
'132    84  unknown       [Нельзя мышкой выделить текстовое поле]
'33     21  unknown
'32     20  unknown       [Курсор над текстовым полем не меняется]
'516    204 RBUTTONDOWN
'533    215 unknown
'517    205 RBUTTONUP
'289    121 ENTERIDLE
'287    11F MENUSELECT
'123    7B  unknown       [От она !!!]
'-------------------------------------------------------------------


Видимо это некоторая WM_XXXX=&H7B.

Aleksej
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 191
Зарегистрирован: 03.06.2003 (Вт) 9:58

Сообщение Aleksej » 18.06.2003 (Ср) 10:29

Это:
Const WM_CONTEXTMENU As Long = &H7B

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 12.07.2004 (Пн) 18:27

А если можно по-подробнее о блокировки субклассингом, а то у меня сейчас такаежа проблемка, надо вообще что-бы ничего не появляловь при правом клике.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 12.07.2004 (Пн) 22:33

1) GSerg говорил уже...
GSerg писал(а):Сабклассингом...
Просто блокируем WM_RBUTTONUP = &H205

2) См. www.vbnet.ru

Eduard
Бывалый
Бывалый
 
Сообщения: 254
Зарегистрирован: 31.08.2003 (Вс) 17:12
Откуда: Эстония

Сообщение Eduard » 13.07.2004 (Вт) 17:12

Так мне ндо вообще чтобы меню (Copy-Paste) не появлялось, вот я и хочу что бы ктото про этот пример мне с субклассингом рассказал или пример-бы дал.

P.S И потом вообще расскажите как этими субклассами пользоваться :oops:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 22

    TopList