BaloonTip на Тoolbar

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

BaloonTip на Тoolbar

Сообщение _igor_ » 09.11.2007 (Пт) 9:59

Привет!
Хочу прикрутить BaloonTip (взял где-то тут в разделе примеров)
к Тoolbar, и возникает такая проблема: для функции нужно знать hWnd контрола, а кнопки Тoolbar'а такового не имеют.
Создавать "свой" Тoolbar из обычных commandButton не подойдет.

Lumen
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 841
Зарегистрирован: 03.12.2005 (Сб) 16:09
Откуда: Брянск

Сообщение Lumen » 09.11.2007 (Пт) 10:48

Попробуй в SPY++ посмотреть какие сообщения передаются тулбару, и привязаться к какому-нить, например WM_NOTIFY. То есть когда возникает это сообщение, смотри ControlID кнопки или позицию курсора и определяй, для какой кнопки показывать тултип. А hwnd можно я думаю тулбаровский взять.
Подпись проходит рефакторинг

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Сообщение _igor_ » 09.11.2007 (Пт) 11:07

спс,попробую...

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 09.11.2007 (Пт) 18:29

Я думаю можно использовать событие ToolBar_MouseMove, а по координатам можно определить кнопку. Что-то типа того:
Код: Выделить всё

Private Sub Toolbar1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    Select Case x
    Case Toolbar1.Buttons(1).Left To Toolbar1.Buttons(1).Left + Toolbar1.Buttons(1).Width
        ...
    Case Toolbar1.Buttons(2).Left To Toolbar1.Buttons(2).Left + Toolbar1.Buttons(2).Width
        ...
    End Select
End Sub
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Сообщение _igor_ » 10.11.2007 (Сб) 16:07

burik писал(а):Я думаю можно использовать событие ToolBar_MouseMove, а по координатам можно определить кнопку. Что-то типа того:
Код: Выделить всё
Private Sub Toolbar1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
    Select Case x
    Case Toolbar1.Buttons(1).Left To Toolbar1.Buttons(1).Left + Toolbar1.Buttons(1).Width
        ...
    Case Toolbar1.Buttons(2).Left To Toolbar1.Buttons(2).Left + Toolbar1.Buttons(2).Width
        ...
    End Select
End Sub


Спасибо, хорошая идея
Только оказалось, что Toolbar не хочет дружить с BaloonTip почему-то,
делаю так:

Код: Выделить всё
Private Sub Form_Load()
    Dim TT As New cToolTipEx
    Call TT.CreateToolTip(Me.hWnd, TTS_BALLOON, icoTTInfo, , 100, 500, 10000)
    Call TT.AddToolTip(cmdNext.hWnd, "Go to next step!", TTF_TRANSPARENT)
    Call TT.AddToolTip(Toolbar1.hWnd, "Go to next step!", TTF_TRANSPARENT)
End Sub


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

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 10.11.2007 (Сб) 23:04

Я тоже поэксперементировал с ToolBar'ом и Baloon. Дружить-то они дружат. Вся фишка в том что внутри окна контрола ToolBar, находится еще одно окно с собственным hWnd и т. д., на котором и рисуются все кнопки. Короче, я выставил BorderStyle=1, тогда при наведении на рамку самого ToolBar'а (не кнопки!) появляется подсказка. Надо попробовать найти дочернее окно..
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Сообщение _igor_ » 11.11.2007 (Вс) 9:27

burik писал(а):Я тоже поэксперементировал с ToolBar'ом и Baloon. Дружить-то они дружат. Вся фишка в том что внутри окна контрола ToolBar, находится еще одно окно с собственным hWnd и т. д., на котором и рисуются все кнопки. Короче, я выставил BorderStyle=1, тогда при наведении на рамку самого ToolBar'а (не кнопки!) появляется подсказка. Надо попробовать найти дочернее окно..

Интересно. Попробовал сделать как ты, тоже работает при наведении на рамку :) А как ты выяснил что есть еще одно окно со своим hwnd?
Откуда т.с. ноги растут?:)
Последний раз редактировалось _igor_ 15.11.2007 (Чт) 10:18, всего редактировалось 1 раз.

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 11.11.2007 (Вс) 19:15

Поковырялся немного и получилось. При загрузке формы ищу дочернее окно ToolBar'а (оно у него единственное как говорит Spy++) при помощи FindWindowEx. Класс этого окна "msvb_lib_toolbar". Далее делаю как описывал выше. Все работает. :)
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

_igor_
Новичок
Новичок
 
Сообщения: 47
Зарегистрирован: 25.08.2007 (Сб) 14:00

Сообщение _igor_ » 12.11.2007 (Пн) 19:03

Ага ясно. Сейчас тоже попробую... правда вместо spy++ у меня winID,
но наверно не суть важно
Спасибо за помощь!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 62

    TopList  
cron