Combobox и события MouseMove, MouseDown, MouseUp

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

Combobox и события MouseMove, MouseDown, MouseUp

Сообщение SanyaT » 17.02.2004 (Вт) 8:25

Мастера!
Подскажите как у Combobox обрабабатывать эти события, если их нету у стандартного контрола Combobox'a,
а лучше как добавлять события к стандартным элементам управления,
не создавая свой контрол с нуля...

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 17.02.2004 (Вт) 8:45

:evil: ну это уже совсем на грани...
вы, молодой человек, в чем программы пишите? в блокноте что-ли?
в среде разработки VB при двойном щелчке на контроле появляется окно кода с процедурой обработки события. в верху окна кода есть два выпадающих списка: в левом находятся объекты для которых можно создать обработчики событий, а в правом - доступные для выбранного контрола события.

p.s. еще один такой вопрос и я одену себе на голову монитор и буду так ходить на работу :evil:
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

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

Сообщение Amed » 17.02.2004 (Вт) 9:36

:evil:
Если бы господин Cyrax был столь любезен для начала открыть VB и убедиться, что у ComboBox действительно нет таких событий в списке, я уверен, что он не был бы столь несдержан в своих суждениях... :evil:

2SanyaT:
Предполагаю несколько вариантов развития событий:
а) ищем ocx-контрол, аналогичный ComboBox'у, я уверен, что такие есть
б) пробуем обойтись связкой ComboBox+Label, если сделать Label прозрачным (Opaque=True) и поместить над ComboBox, то можно, неверное, передавать события Click Label'а ComboBox'у... И обрабатывать события Mouse Label'а.

2Cyrax:
А монитор на голове - хорошая идея :evil:

SanyaT
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 12.02.2004 (Чт) 8:21
Откуда: Чебоксары

Сообщение SanyaT » 17.02.2004 (Вт) 9:43

Снова, для тех кто в бронепоезде:
стандартный контрол combobox обрабатывает события:
Change, Click, DblClick, DragDrop, DragOver, DropDown, GotFocus, KeyDown, KeyPress, KeyUp, LostFocus, OLExxx(6), Scroll,Validate

!НО НЕ ОБРАБАТЫВАЕТ МЫШИНЫЕ:MouseMove,MouseDown,MouseUp

?как их туда добавить, т.е добавить события к стандартному элементу управления, не создавая его самому.

P/S Отсутствие этих событий делает не возможной перенос контролов типа combobох (у других же есть они) по форме в runtime-режиме

SanyaT
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 12.02.2004 (Чт) 8:21
Откуда: Чебоксары

Сообщение SanyaT » 17.02.2004 (Вт) 9:45

Amed, спасибо за поддержку, попробую...

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 17.02.2004 (Вт) 10:03

:oops: чтож, каюсь
спасибо, что ткнули носом в мою же невнимательность
и приношу извинения...
а VB я все же открывал...

----------------
и немного слов в свое оправдание...
это относится к предыдущему топику SanyaT и многим другим топикам, заданым другими начинающими пользователями форума и начинающими кодерами
что бы не возникало подобных ситуаций (а возникла она только лишь иза того, что я по инерции, не отойдя от предыдущей темы про события контролов, читал уже эту тему не так внимательно, как следовало). по этому во избежание подобных ситуаций задавайте вопрос корректно, точно описывая проблему и ситуацию, при которой эта проблема происходит. что бы люди, которые пытаются ответить на ваш вопрос, не ломали себе голову, пытаясь понять "а что же в действительности нужно автору вопроса".
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

SanyaT
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 12.02.2004 (Чт) 8:21
Откуда: Чебоксары

Сообщение SanyaT » 17.02.2004 (Вт) 12:22

Amed писал(а):....
б) пробуем обойтись связкой ComboBox+Label, если сделать Label прозрачным (Opaque=True) и поместить над ComboBox, то можно, неверное, передавать события Click Label'а ComboBox'у... И обрабатывать события Mouse Label'а.
...


у стандарного Label'а нету свойства Opaque (vb 6.0), т.е и нету прозрачности, а вопрос остался открытым.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 17.02.2004 (Вт) 12:37

это свойство у Label назывется BackStyle
и принимает значения 0-Transparent и 1-Opaque
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

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

Сообщение Amed » 17.02.2004 (Вт) 21:34

Теперь моя очередь каяться за невнимательность... :oops:

ilia_night
Новичок
Новичок
 
Сообщения: 32
Зарегистрирован: 14.01.2004 (Ср) 20:31
Откуда: Невинномысск

Сообщение ilia_night » 18.02.2004 (Ср) 19:59

А ты пробовал засунуть Combobox в picturebox.
Лень двигатель прогресса!!

eteP
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 16.02.2004 (Пн) 18:14

Сообщение eteP » 18.02.2004 (Ср) 21:58

а через функцию
Код: Выделить всё
procOld = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf WindowProc)

этого нельзя разве сделать?

SanyaT
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 12.02.2004 (Чт) 8:21
Откуда: Чебоксары

Сообщение SanyaT » 19.02.2004 (Чт) 7:54

ilia_night: А ты пробовал засунуть Combobox в picturebox.
- Так и не понял причем тут PictureBox

eteP: а через функцию
Код:
procOld = SetWindowLong(Me.hWnd, GWL_WNDPROC, AddressOf WindowProc)
этого нельзя разве сделать?
- вот что дал поиск в MSDN:
The SetWindowLong function changes an attribute of the specified window. The function also sets a 32-bit (long) value at the specified offset into the extra window memory of a window.
и
LONG SetWindowLong(
HWND hWnd, // handle to window
int nIndex, // offset of value to set
LONG dwNewLong // new value
);
откуда ты взял такое описание, не понял, и SetWindowLong - меняет стили окна, а не то что у тебя написано...

eteP
Начинающий
Начинающий
 
Сообщения: 9
Зарегистрирован: 16.02.2004 (Пн) 18:14

Сообщение eteP » 19.02.2004 (Чт) 13:14

А ты внимательно смотрел:))?
Там же стоит GWL_WNDPROC, а AddressOf WindowProc это адрес твоей функции в которую будут сыпаться сообщения.
У меня в примере стоит Me.hWnd это на форму (нужно было так сделать).
Но в принципе комбо бокс тоже окно.


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

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

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

    TopList