Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / "Поведение кнопки как на Toolbar'ах" или "Мой ActiveX" / 3 сообщений из 3, страница 1 из 1
20.09.2003, 10:40
    #32270900
Нуф-нуф
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Поведение кнопки как на Toolbar'ах" или "Мой ActiveX"
Драсте!
Сами мы чайники не местные, почему вопрошаем вашего споможения...

Понадобилась мне кнопка, которая бы меняла стиль (эффекты) отображения при "накате" на нее курсора мыши. Если с первым шагом "Курсор над кнопкой" всё ясно (OnMouseMove), то со второым "Курсор ушел с кнопки" - непонятки. Как отследить? Вокруг самой кнопки АктивХ не содержит "выступающих" элементов (кусков самого контейнера, например), отслеживая MouseMove над которыми я бы мог понять, что курсор ушел, да и неблагодарное это дело, ибо если курсор передвинуть слишком быстро, то событие просто не генерируется. Поэтому пошел таким путем:

1. По MouseMove кнопки запускаю таймер;
2. Таймер вызывает функцию, проверяющую не ушел ли курсор с кнопки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Function IsMouseOver(hWnd As Long) As Boolean
Dim udtPos As POINTAPI
Dim hWndRect As RECT
Dim lng As Long
  lng = ClientToScreen&(hWnd, udtPos)
  lng = GetClientRect&(hWnd, hWndRect)
  hWndRect.left = udtPos.x
  hWndRect.top = udtPos.y
  hWndRect.right = hWndRect.right + udtPos.x
  hWndRect.bottom = hWndRect.bottom + udtPos.y
  lng = GetCursorPos&(udtPos)
  If udtPos.y > hWndRect.bottom Then Exit Function
  If udtPos.y < hWndRect.top Then Exit Function
  If udtPos.x < hWndRect.left Then Exit Function
  If udtPos.x > hWndRect.right Then Exit Function
  IsMouseOver = True
End Function
3. Если курсор ушел, то останавливаю таймер.

Вопрос: Я сделал так, а как делает система? Как надо делать правилно? Не ждет ли меня какой системынй подвох в этой функции? Вроде всё логично, но с API начал знакомиться недавно, поэтому кто его знает...

Ну и еще один просто таки ламерский вопрос, уж простите... Если в своем АктивХ я использую другие АктивХ, то не перестанет ли работать мой АктивХ если на машине пользователя не окажется библиотек, с исходными контролами? Т.е. мой АктивХ запихивает в себя ссылку на другой АктивХ или прям его самого? Еще раз извиняюсь за ламерство...

Заранее спасибо!

з.ы. Можно, конечно, поискать сторонние кнопки, но из всех найденных меня не устроила ни одна! Может искал плохо, но вопрос ведь не в этом...
...
Рейтинг: 0 / 0
20.09.2003, 11:53
    #32270909
Shkurenko Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Поведение кнопки как на Toolbar'ах" или "Мой ActiveX"
> Вопрос: Я сделал так, а как делает система?

посмотри здесь, может найдешь что-нибудь полезное
...
Рейтинг: 0 / 0
20.09.2003, 15:46
    #32270946
Нуф-нуф
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
"Поведение кнопки как на Toolbar'ах" или "Мой ActiveX"
Александр, спасибо! То что надо! Откажусь от своего велосипеда в пользу второго варианта, указанного в статье.

Люди, а по ламерскому вопросу поделитесь знаниями?
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / "Поведение кнопки как на Toolbar'ах" или "Мой ActiveX" / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]