Balloons

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

Balloons

Сообщение xqz_me » 06.03.2007 (Вт) 17:54

Надо отобразить этот самый баллон у некоторого контрола (например, command1) при наступлении некоторого события (например, command2_click). Вот что я сделал:
Код: Выделить всё
[Dim TT As New clsToolTipEx

Private Sub Command2_Click()
TT.AddToolTip Command1.hWnd, "BaloonTip" & vbCrLf & "тестовый баллун", TTF_DI_SETITEM
Private Sub Form_Load()
TT.CreateToolTip Me.hWnd, TTS_BALLOON, icoTTError, "TEST"
End Sub
End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
TT.DestroyToolTip
End Sub

Но баллун появляется только, только ели подержать курсор над command1, а не сразу просле нажатия command2. Что можно сделать?

З.Ы. Используется такой class module:
Не надо выкладывать простыню кода, которая приводит к разлезанию страницы. Надо прикладывать аттачем. --GSerg

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 06.03.2007 (Вт) 18:20

Не совсем понял вопрос - Balun должен появляться сразу же при нажатии кнопки над другой кнопкой или сразу же после наведения на вторую кнопку после предварительного нажатия на первую кнопку?
Если второе -
Код: Выделить всё
Private Sub Command2_Click()
      TT.DelayTime(TTDT_INITIAL) = 0
      TT.AddToolTip Command1.hWnd, "BaloonTip" & vbCrLf & "тестовый баллун", TTF_DI_SETITEM
End Sub


Если первое - надо копаться в коде класса.
Salus populi suprema lex

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 06.03.2007 (Вт) 18:36

Именно первое. Второе и так работает.

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 06.03.2007 (Вт) 20:57

Подскажите плиз... Есть ещё идея через SendMessage убедить command1, что над ней держат мышь, но как это сделать я слабо понимаю.

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 06.03.2007 (Вт) 21:14

xqz_me писал(а):Есть ещё идея через SendMessage убедить command1, что над ней держат мышь, но как это сделать я слабо понимаю.

Наверное есть более красивое решение, какое пока не знаю... Но если хочется так, то скачай "мой" справочник по API функциям из "Народной литературы" и смотри "Сообщения"->"W"->"WM_MOUSEMOVE"
P.S. работоспособность кода не проверял, так что если что я непричём. :roll:
Salus populi suprema lex

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 06.03.2007 (Вт) 21:23

Код: Выделить всё
Dim TT As New clsToolTipEx
Const WM_MOUSEMOVE = &H200
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private Sub Command2_Click()
TT.AddToolTip Command1.hWnd, "BaloonTip" & vbCrLf & "òåñòîâûé áàëëóí", TTF_DI_SETITEM
SendMessage Command1.hWnd, WM_MOUSEMOVE, ByVal CLng(0), ByVal 0

End Sub
Private Sub Form_Load()
TT.CreateToolTip Me.hWnd, TTS_BALLOON, icoTTError, "TEST"
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
TT.DestroyToolTip
End Sub

Лучше не стало... :(

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 06.03.2007 (Вт) 22:10

Вот интересно, что, автор хотел здесь что то другое услышать?

Alexei (08:04 PM) :
ну как обяснить... в этом коде ьалон появляется над сommand1 если навести на неё мышь и подержать. а хочу, чтобы он появился при нажатии command2
Alexei (08:05 PM) :
понятно?
Хакер (08:06 PM) :
ну пошли кнопке1 сообщение, WM_MOUSEMOVE
Хакер (08:07 PM) :
или mouseon


Попробуй другие сообщения.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 06.03.2007 (Вт) 23:06

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

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 08.03.2007 (Чт) 19:27

Может я искать не умею конечно... Но ничего не нашёл. Какие ещё есть сообщения кнопке, которые можно попробовать в данной ситуации?

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 08.03.2007 (Чт) 20:47

xqz_me писал(а):Автор не нашёл таких сообщений в справочнике dr.MIG и будет очень признателен, если ему скажут константы для них.

Автор нашёл сообщение WM_MOUSEMOVE. И в его коде оно посылается кнопке Command1. Хочешь проверить добавь в событие кнопки Command1_MouseMove строчку
Код: Выделить всё
Command1.Caption="la-la-la"


А в событие Command2_MouseMove
Код: Выделить всё
SendMessage Command1.hWnd, WM_MOUSEMOVE, ByVal CLng(0), ByVal 0


Другое дело, что тем не менее, не всплывает тот самый Baloon.
Salus populi suprema lex

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 09.03.2007 (Пт) 16:18

Да это то я нашёл. Даже код висит несколько постов выше. Я других сообщений не нашёл.

xqz_me
Постоялец
Постоялец
 
Сообщения: 413
Зарегистрирован: 04.12.2005 (Вс) 14:58

Сообщение xqz_me » 16.03.2007 (Пт) 16:58

Может кто-нить подскажет, что надо в существующим модуле переделать или посоветует какой-нить готовый модель/контрол для балунов. А я искал и ничего не нашёл (бесплатного).. А мне это к спеху, честно говоря. :?

dr.MIG
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1441
Зарегистрирован: 18.12.2004 (Сб) 9:53
Откуда: г.Ярославль

Сообщение dr.MIG » 16.03.2007 (Пт) 23:31

ИМХО, легче рисовать квадрат с текстом в нужном месте самому, т.к. в модуле Ballon создаётся как окно соответствующего системного класса, которое по определению всплывает над ЭУ, над которым находится курсор, поэтому с тем, что модуль можно легко подправить, я поспешил. А вот почему не удаётся его 'обмануть' ф-ей SendMessage, я если честно, пока несовсем понимаю.
Salus populi suprema lex

GM
programador
programador
 
Сообщения: 1427
Зарегистрирован: 24.06.2003 (Вт) 15:56
Откуда: 194.67.52.100

Сообщение GM » 17.03.2007 (Сб) 1:16

الفيجوال بيسك الرابح


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 99

    TopList