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

Понадобилась мне кнопка, которая бы меняла стиль (эффекты) отображения при "накате" на нее курсора мыши. Если с первым шагом "Курсор над кнопкой" всё ясно (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
"Поведение кнопки как на Toolbar'ах" или "Мой ActiveX"
    #32270909
Shkurenko Alexander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Вопрос: Я сделал так, а как делает система?

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

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


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