Глюк какойто...

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

Глюк какойто...

Сообщение Бяка » 16.12.2006 (Сб) 0:15

люди! есть такая програмка как API-Guide, и там есть пример вот такой:

Код: Выделить всё
'Download the full source+pictures+... at http://kpdteam.hypermart.net/download/tray.zip
Private Type NOTIFYICONDATA
    cbSize As Long
    hWnd As Long
    uId As Long
    uFlags As Long
    ucallbackMessage As Long
    hIcon As Long
    szTip As String * 64
End Type

Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const NIF_MESSAGE = &H1
Private Const NIF_ICON = &H2
Private Const NIF_TIP = &H4

Private Const WM_LBUTTONDBLCLK = &H203
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_RBUTTONUP = &H205

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean
Dim TrayI As NOTIFYICONDATA
Private Sub Form_Load()
    TrayI.cbSize = Len(TrayI)
    'Set the window's handle (this will be used to hook the specified window)
    TrayI.hWnd = pichook.hWnd
    'Application-defined identifier of the taskbar icon
    TrayI.uId = 1&
    'Set the flags
    TrayI.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
    'Set the callback message
    TrayI.ucallbackMessage = WM_LBUTTONDOWN
    'Set the picture (must be an icon!)
    TrayI.hIcon = imgIcon(2).Picture
    'Set the tooltiptext
    TrayI.szTip = "Recent" & Chr$(0)
    'Create the icon
    Shell_NotifyIcon NIM_ADD, TrayI

    Me.Hide
End Sub
Private Sub Form_Unload(Cancel As Integer)
    'remove the icon
    TrayI.cbSize = Len(TrayI)
    TrayI.hWnd = pichook.hWnd
    TrayI.uId = 1&
    Shell_NotifyIcon NIM_DELETE, TrayI
    End
End Sub
Private Sub mnuPop_Click(Index As Integer)
    Select Case Index
        Case 0
            MsgBox "KPD-Team 1998" + Chr$(13) + "URL: http://www.allapi.net/" + Chr$(13) + "E-Mail: KPDTeam@Allapi.net", vbInformation + vbOKOnly
        Case 2
            Unload Me
    End Select
End Sub
Private Sub pichook_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Msg = X / Screen.TwipsPerPixelX
    If Msg = WM_LBUTTONDBLCLK Then
        'Left button double click
        mnuPop_Click 0
    ElseIf Msg = WM_RBUTTONUP Then
        'Right button click
        Me.PopupMenu mnuPopUp
    End If
End Sub
Private Sub Timer1_Timer()
    Static Tek As Integer
    'Animate the icon
    Me.Icon = imgIcon(Tek).Picture
    TrayI.hIcon = imgIcon(Tek).Picture
    Tek = Tek + 1
    If Tek = 3 Then Tek = 0
    Shell_NotifyIcon NIM_MODIFY, TrayI
End Sub

при по выполнении ентого кода в трей добавляется иконка, вроде всё пучком, НО она НЕРЕАГИРУЕТ на мышку ! и при етом в ВБ слетает панелька инструментов (кнопочки всякие проподають...) :x
чё за фигня а? помогите мене разобраться с етой проблемкой!
я уже код полностью переписал - эфект тотже!! :(

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 16.12.2006 (Сб) 1:44

Где-то на форуме был класс для работы с треем.
Выложить?
Подпись находится в стадии разработки...

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 16.12.2006 (Сб) 1:56

выкладуй

случайно не TrayIcon? :roll: оно у меня тоже не работает! ефект такойже как и было описанно выше

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 16.12.2006 (Сб) 2:02

Значт винда глючит. Или VB.
Подпись находится в стадии разработки...

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 16.12.2006 (Сб) 13:16

Я только что занимался этим примером TrayIcon.
Если сам пример работает, то у тебя трей может не реагировать на мышь, если ты не вставляешь в Form_MouseDown CallEvent, или если у тебя ScaleMode стоит Pixel. В этом случае нужно поменять либо на Twips, либо в классе убрать "/ Screen.TwipsPerPixelX"
Подпись находится в стадии разработки...

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 16.12.2006 (Сб) 15:00

есть такой ocx, systray... он входит в комплект поставки vb. :roll: если нужна иконка в трее и чтоб все работало лучше и легче использовать его. :o

nekeda
Постоялец
Постоялец
 
Сообщения: 710
Зарегистрирован: 10.04.2005 (Вс) 23:20

Сообщение nekeda » 16.12.2006 (Сб) 15:27

чтоб все работало лучше и легче


..а потом твою программку запустят на компе, где нет ВБ6, и вот тогда всё будет совсем хорошо и легко.

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 16.12.2006 (Сб) 15:41

да, но в эту самую програмку вставить модуль инициализации с проверкой, зарегестрирован ли контрол (это делается без всяких API и тд) и если контролл не зарегестрирован, зарегестрировать. А вообще то у програмок обычно бывает setup, который сам все зарегит. А если хочется один exe файл, запихнуть контрол в ресурсы.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 16.12.2006 (Сб) 15:59

yaklit
Что ни пост, то бред...
Нет стандартного контрола systray. Запихнуть контрол в ресурсы - хуже не придумаешь.
Лучший способ понять что-то самому — объяснить это другому.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.12.2006 (Сб) 16:04

Мы его раза три предупреждали, в т.ч. с вынесением официальных предупреждений. Но с вполне определённой периодичностью yaklit приходит и постит бред в 4-5 последовательно идущих топиков. За что и будет забанен в понедельник, как мне кажется.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 16.12.2006 (Сб) 16:25

:( Я лишь имел ввиду запихнуть OCX файл в ресурсы а потом извлечь его и зарегестрировать. А вы.... :evil: Ну и злитесь на меня. Просто может как файлы в ресурсы запихивать так все мастера. а как я это попытался сделать так блин. ну давайте, бантье, ведь вам всем будет хорошо. что же ждать уж, лучще прямо сейчас. :?

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 16.12.2006 (Сб) 18:05

ага, разобрался , у меня Shell_NotifyIcon недружит с мелкософт комон контрол 6.0 :shock:

п.с. а шоб осх добавить в ехе юзайте Fusion


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 74

    TopList