Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Смена значков на кнопках API ToolBar Добавлено: 20.07.04 00:18  

Автор вопроса:  Lister | ICQ: 298621256 

Ответить

  Ответы Всего ответов: 27  

Номер ответа: 16
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #16
Добавлено: 21.07.04 20:29
 Не можешь поймать когда мышка уходит или что?

Ответить

Номер ответа: 17
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #17 Добавлено: 21.07.04 20:35
Да, точно! Не могу поймать уход мышки. Как я понял и приход и уход
происходит при TBN_HOTITEMCHANGE а как их разделить - приход и уход -
проблема...

Ответить

Номер ответа: 18
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #18
Добавлено: 21.07.04 20:47
А это разве не оно?
- idOld
Command identifier of the previously highlighted item.
- idNew
Command identifier of the item about to be highlighted.

===
typedef struct tagNMTBHOTITEM {
    NMHDR hdr;
    int idOld;
    int idNew;
    ;DWORD dwFlags;
} NMTBHOTITEM, FAR* LPNMTBHOTITEM;

Ответить

Номер ответа: 19
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #19 Добавлено: 21.07.04 21:09
Может быть я делаю что-то неверно, но вот такая структура

Private Type NMTBHOTITEM
hdr As NMHDR
idOld As Integer
idNew As Integer
dwFlags As Long
End Type

с таким кодом

Dim nmhi As NMTBHOTITEM

CopyMemory nmhi, ByVal lParam, Len(nmhi)


при наведении мышью на кнопку дает:

nmhi.dwFlags - номер кнопки
nmhi.idNew - ноль
nmhi.idOld - ноль


при уходе мыши с кнопки

nmhi.dwFlags - ноль
nmhi.idNew - ноль
nmhi.idOld - номер кнопки с которой мышь ушла

т.е. nmhi.idNew всегда ноль

и убей меня, но я не знаю как еще можно её использовать - лишь только
брать номер кнопки...

Ответить

Номер ответа: 20
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #20 Добавлено: 21.07.04 21:19
Кстати, по адресу
http://www.vbaccelerator.com/home/VB/Code/Controls/Toolbar/vbAccelerator_ToolBar_and_CoolMenu_Control/VB6_Toolbar_Complete_Source_zip_cToolbar_ctl.asp

есть код тулбара, в котором используется TBN_HOTITEMCHANGE
но там я вообще ничего не понял...

Ответить

Номер ответа: 21
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #21
Добавлено: 22.07.04 02:38
 Не пойму в чём проблема.
 Вроде всё используемо.
При наведении срабатывает nmhi.dwFlags, а при уходе nmhi.idOld

Ответить

Номер ответа: 22
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #22
Добавлено: 22.07.04 02:46
Так попробуй себе их код присобачить.

      Case TBN_HOTITEMCHANGE
         If (hdr.hwndFrom = m_hWndToolBar) Then
            ISubclass_WindowProc = CallOldWindowProc(hwnd, iMsg, wParam, lParam)
            If m_lMajorVer > 4 Or (m_lMajorVer = 4 And m_lMinorVer >= 70) Then
               ;Dim nmTBHI As NMTBHOTITEM
               CopyMemory nmTBHI, ByVal lParam, Len(nmTBHI)
               eReason = nmTBHI.dwFlags
               iOld = -1: iNew = -1
               If (eReason And HICF_ENTERING) <> HICF_ENTERING Then
                  iOld = SendMessageLong(m_hWndToolBar, TB_COMMANDTOINDEX,
                   nmTBHI.idOld, 0)
               End If
               If (eReason And HICF_LEAVING) <> HICF_LEAVING Then
                  iNew = SendMessageLong(m_hWndToolBar, TB_COMMANDTOINDEX,
                   nmTBHI.idNew, 0)
               End If
               RaiseEvent HotItemChange(iNew, iOld, eReason)
            End If
            ISubclass_WindowProc = 0
         End If

Ответить

Номер ответа: 23
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #23 Добавлено: 22.07.04 14:15
Я кажется разобрался:

у меня была загвоздка в нахождении номера изображения, т.к.
nmhi.dwFlags и nmhi.idOld дают номер кнопок

в общем я сделал такую штуку:

idButton = nmhi.dwFlags

If idButton > 0 Then
idBitmap = SendMessage(hToolBar, TB_GETBITMAP, idButton, ByVal 0&;)

Call SendMessage(hToolBar, TB_CHANGEBITMAP, idButton, ByVal idBitmap + 12)

End If

idOld = nmhi.idOld

If idOld > 0 Then
idBitmap = SendMessage(hToolBar, TB_GETBITMAP, ByVal idOld, ByVal 0&;)

Call SendMessage(hToolBar, TB_CHANGEBITMAP, idOld, ByVal idBitmap - 12)

End If

и это нормально работает :)))

Ответить

Номер ответа: 24
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #24 Добавлено: 22.07.04 15:00
Пробовал я их код использовать - ерунда какая-то одним словом...

Ответить

Номер ответа: 25
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #25
Добавлено: 22.07.04 15:16
 Тоже что и у тебя, только по правилам записано.

Ответить

Номер ответа: 26
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #26
Добавлено: 22.07.04 15:19
 А ты с меню будешь разбираться?

Когда кончишь разбираться с тулбаром отошлёшь мне исходник? Я из него нормальный пример сделаю.

Ответить

Номер ответа: 27
Автор ответа:
 Lister



ICQ: 298621256 

Вопросов: 57
Ответов: 304
 Профиль | | #27 Добавлено: 22.07.04 16:08
С меню я разбирался еще зимой. Мне нужно было popup меню при TBN_DROPDOWN

вставлю в исходник (сделал несколько топорно)

В общем, отправляю. Только его желательно смотреть в ХР - там картинки
32 битные

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам