Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Какой из элементов Tool bar находится под курсором без нажатия? / 8 сообщений из 8, страница 1 из 1
22.07.2013, 17:37
    #38339477
Slash232
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой из элементов Tool bar находится под курсором без нажатия?
Как определить программно - какой из элементов Toolbar находится под курсором без нажатия? Заранее большое спасибо
...
Рейтинг: 0 / 0
22.07.2013, 17:45
    #38339486
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой из элементов Tool bar находится под курсором без нажатия?
HitTest
...
Рейтинг: 0 / 0
22.07.2013, 18:01
    #38339521
Slash232
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой из элементов Tool bar находится под курсором без нажатия?
Не работает HitTest в Toolbar
...
Рейтинг: 0 / 0
22.07.2013, 18:22
    #38339550
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой из элементов Tool bar находится под курсором без нажатия?
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
22.07.2013, 18:35
    #38339576
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой из элементов Tool bar находится под курсором без нажатия?
Почему я использую двойную конструкцию If... Else я сейчас не помню (код старый), но это как то страхует от каких-то частных случаев.
...
Рейтинг: 0 / 0
22.07.2013, 18:46
    #38339585
Slash232
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой из элементов Tool bar находится под курсором без нажатия?
Дмитрий77, если можно объясни немного что в данном случае есть что? я пока что новичёк
...
Рейтинг: 0 / 0
22.07.2013, 19:18
    #38339630
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой из элементов Tool bar находится под курсором без нажатия?
Slash232,

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

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

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

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

Если не хочешь, _MouseMove тебе в помощь + затычки в стиле "Детский Сад".
Ну или иди сразу в .Net куда-нибудь, хотя думаю там проблемы будут те же, м.б. чуть поменьше.
...
Рейтинг: 0 / 0
17.10.2013, 00:57
    #38430531
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой из элементов Tool bar находится под курсором без нажатия?
Дмитрий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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Какой из элементов Tool bar находится под курсором без нажатия? / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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