Страница: 1 | 2 |
Вопрос: Смена значков на кнопках API ToolBar
Добавлено: 20.07.04 00:18
Автор вопроса: Lister | ICQ: 298621256
Ответы
Всего ответов: 27
Номер ответа: 16
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #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-сайт:
Профиль | | #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;
 WORD 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-сайт:
Профиль | | #21
Добавлено: 22.07.04 02:38
Не пойму в чём проблема.
Вроде всё используемо.
При наведении срабатывает nmhi.dwFlags, а при уходе nmhi.idOld
Номер ответа: 22
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #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
 im 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-сайт:
Профиль | | #25
Добавлено: 22.07.04 15:16
Тоже что и у тебя, только по правилам записано.
Номер ответа: 26
Автор ответа:
@CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #26
Добавлено: 22.07.04 15:19
А ты с меню будешь разбираться?
Когда кончишь разбираться с тулбаром отошлёшь мне исходник? Я из него нормальный пример сделаю.
Номер ответа: 27
Автор ответа:
Lister
ICQ: 298621256
Вопросов: 57
Ответов: 304
Профиль | | #27
Добавлено: 22.07.04 16:08
С меню я разбирался еще зимой. Мне нужно было popup меню при TBN_DROPDOWN
вставлю в исходник (сделал несколько топорно)
В общем, отправляю. Только его желательно смотреть в ХР - там картинки
32 битные