powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Какой из элементов Tool bar находится под курсором без нажатия?
8 сообщений из 8, страница 1 из 1
Какой из элементов Tool bar находится под курсором без нажатия?
    #38339477
Slash232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как определить программно - какой из элементов Toolbar находится под курсором без нажатия? Заранее большое спасибо
...
Рейтинг: 0 / 0
Какой из элементов Tool bar находится под курсором без нажатия?
    #38339486
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HitTest
...
Рейтинг: 0 / 0
Какой из элементов Tool bar находится под курсором без нажатия?
    #38339521
Slash232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не работает HitTest в Toolbar
...
Рейтинг: 0 / 0
Какой из элементов Tool bar находится под курсором без нажатия?
    #38339550
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slash232,

Если по нормальному, то сабклассить контейнер тулбара на предмет
TBN_HOTITEMCHANGE notification code

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
   Case WM_NOTIFY 'toolbar
     Call CopyMemory(uNMHDR, ByVal lParam, Len(uNMHDR))
     Select Case uNMHDR.code
       Case TBN_HOTITEMCHANGE
          If (uNMHDR.hwndFrom = g_hwndToolBar) Then
            Call CopyMemory(uNMTBHI, ByVal lParam, Len(uNMTBHI))
            If (uNMTBHI.idOld) Then
              Form1.StatusBar1.Panels(1).Text = "кнопка не выбрана"
            Else
              Form1.StatusBar1.Panels(1).Text = GetHelpToolbarAPIStr(uNMTBHI.idNew)
            End If
            If (uNMTBHI.idNew) Then
              Form1.StatusBar1.Panels(1).Text = GetHelpToolbarAPIStr(uNMTBHI.idNew)
            Else
              Form1.StatusBar1.Panels(1).Text = " 'кнопка не выбрана"
            End If
          End If
...
Рейтинг: 0 / 0
Какой из элементов Tool bar находится под курсором без нажатия?
    #38339576
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему я использую двойную конструкцию If... Else я сейчас не помню (код старый), но это как то страхует от каких-то частных случаев.
...
Рейтинг: 0 / 0
Какой из элементов Tool bar находится под курсором без нажатия?
    #38339585
Slash232
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77, если можно объясни немного что в данном случае есть что? я пока что новичёк
...
Рейтинг: 0 / 0
Какой из элементов Tool bar находится под курсором без нажатия?
    #38339630
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Slash232,

Изучи сначала что такое сабклассинг. Примеров в сети и на форуме миллионы. Есть у тебя Toolbar, у него есть .hwnd. Toolbar посылает родителю (напр. Form1 на которой он находится) сообщения. Эти сообщения можно ловить в WindowProc ф-ции, для чего родителя (Form1) надо сабклассить и т.д.

По сути твоего вопроса я тебе код написал.
Естественно тебе нужны определения констант, структур и т.п.
Поиском по Google все это быстро ищется как вариант.

Если хочешь писать нормально, то все это надо изучить.
Если ты даже счас затратишь несколько дней на то чтоб сделать то что я тебе написал, то в будущем это оправдается и будешь делать такие штуки гораздо быстрее.

Если я счас потрачу полчаса, чтобы выскрести тебе из проекта "под ключ" все что касается твоего вопроса, то это тебе в целом не поможет, посему делать этого не буду.

Если не хочешь, _MouseMove тебе в помощь + затычки в стиле "Детский Сад".
Ну или иди сразу в .Net куда-нибудь, хотя думаю там проблемы будут те же, м.б. чуть поменьше.
...
Рейтинг: 0 / 0
Какой из элементов Tool bar находится под курсором без нажатия?
    #38430531
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Почему я использую двойную конструкцию If... Else я сейчас не помню (код старый), но это как то страхует от каких-то частных случаев.
Недопонял в свое время вот этого:
NMTBHOTITEM structure

dwFlagsType: DWORD

Flags that indicate why the hot item has changed. This can be one or more of the following values:

HICF_ENTERING Modifies the other reason flags. If this flag is set, there is no previous hot item and idOld does not contain valid information.

HICF_LEAVING Modifies the other reason flags. If this flag is set, there is no new hot item and idNew does not contain valid information.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
  Private Const HICF_ENTERING = &H10 ' idOld is invalid 
  Private Const HICF_LEAVING = &H20 ' idNew is invalid 

          Case TBN_HOTITEMCHANGE
            If (uNMHDR.hwndFrom = ToolBar1.Handle) Then
              Dim uNMTBHI As NMTBHOTITEM = _
              CType(Marshal.PtrToStructure(m.LParam, GetType(NMTBHOTITEM)), NMTBHOTITEM)
              Debug.WriteLine(IIf((uNMTBHI.dwFlags And HICF_LEAVING) <> HICF_LEAVING, _
               "Button " & uNMTBHI.idNew.ToString & " hotlited", "No buttons hotlited"))
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Какой из элементов Tool bar находится под курсором без нажатия?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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