проблема с компонентом "TrayIcon"

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

проблема с компонентом "TrayIcon"

Сообщение v-adix » 15.05.2003 (Чт) 14:09

при ПОЛНОЙ выгрузке программы значок в трэе остаётся. как с этим бороться?

Gigahard
Бывалый
Бывалый
 
Сообщения: 253
Зарегистрирован: 24.07.2002 (Ср) 11:15
Откуда: Russia

Сообщение Gigahard » 15.05.2003 (Чт) 16:43

Командой выгрузки значка из трея на событии unload или terminate! Если останавливаешь прогу в среде разработки кнопкой стоп, то значок не исчезает. Нужно скомпилировать прогу.

Все гениальное просто! :P

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 17.05.2003 (Сб) 12:58

значок остаётся даже после компиляции! как вообще выгрузить значок (я пользуюсь компонентом TrayIcon.ocx)?

iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

Сообщение iolaus » 17.05.2003 (Сб) 13:15

таких компонентов море!!!!
там должна быть функция unload

TI_Delete = &H2
NID.uID = IconNum
NID.cbSize = Len(NID)
Shell_NotifyIcon TI_Delete, NID
This message will self destruct in five seconds!!!

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 18.05.2003 (Вс) 10:08

мой компонент: TrayIcon Component By DevPower
Вложения
tray.rar
(27.52 Кб) Скачиваний: 87

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 18.05.2003 (Вс) 11:26

Да что ты упёрся в компонент?!?!?!

На каждом сайте и форуме есть код в три строчки.

ЗЫ: Я не видел ещё полнофункциональных компонентов трей! TaskBarCreated не один не ловит.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 18.05.2003 (Вс) 12:17

2 SEBAS
я спрашивал про компонент, а не про код в 3 строчки

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 18.05.2003 (Вс) 13:15

Вот уродство! Там нет такого метода.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

v-adix
Постоялец
Постоялец
 
Сообщения: 490
Зарегистрирован: 14.11.2002 (Чт) 15:11

Сообщение v-adix » 18.05.2003 (Вс) 14:25

вот именно, что уродство...
попробую "код в 3 строчки", может он поможет...
придётся весь код ковырять...

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 19.05.2003 (Пн) 16:30

размести такой модуль:

Код: Выделить всё
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

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

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 NID As NOTIFYICONDATA

Private m_hWnd          As Long
Private m_Icon          As Long
Private m_ToolTipText   As String

Public Enum TrayIcon_Mouse
    TRAYICON_MOUSE_NONE = 0
    TRAYICON_MOUSE_LEFTDOWN = 1
    TRAYICON_MOUSE_LEFTUP = 2
    TRAYICON_MOUSE_LEFTDBLCLICK = 3
    TRAYICON_MOUSE_RIGHTDOWN = 4
    TRAYICON_MOUSE_RIGHTUP = 5
    TRAYICON_MOUSE_RIGHTDBLCLICK = 6
End Enum

Public Sub Add(hWnd As Long, Icon As Long, Tip As String)
    Dim ret As Long
     
    NID.uID = hWnd
    NID.hWnd = hWnd
    NID.hIcon = Icon
    NID.szTip = Left(Tip, 63) & Chr(0)
    NID.uFlags = NIF_TIP + NIF_MESSAGE + NIF_ICON
    NID.uCallbackMessage = WM_RBUTTONDOWN
    NID.cbSize = Len(NID)

    ret = Shell_NotifyIcon(NIM_ADD, NID)
End Sub

Public Sub Delite(hWnd As Long)
    Dim ret As Long
     
    NID.uID = hWnd
    NID.hWnd = hWnd
    NID.cbSize = Len(NID)

    ret = Shell_NotifyIcon(NIM_DELETE, NID)
End Sub

Function TestTray(X As Single, Y As Single)
    Dim MouseButton As Integer
   
    If frmSet.Visible = True Or Not Y = 0 Then Exit Function
   
    MouseButton = (X And &HFF) / Screen.TwipsPerPixelX
    DoEvents
   
    If MouseButton = 4 Then
        DoEvents
        //ТО ЧТО НАДО ПРИ ЩЕЛЧКЕ ПРАВОЙ КНОПКОЙ
        DoEvents
    End If
End Function


При Form_Load пишешь
Add Me.hWnd, Me.Icon, "Tool tip text"


Также
Код: Выделить всё
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    TestTray X, Y
End Sub


и в Form_Unload
Delite Me.hWnd
End

GoGosha
Постоялец
Постоялец
 
Сообщения: 642
Зарегистрирован: 02.08.2002 (Пт) 9:14
Откуда: Russia

Сообщение GoGosha » 19.05.2003 (Пн) 16:31

Без всяких контролов!!!

Firestorm
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 946
Зарегистрирован: 02.05.2002 (Чт) 14:36
Откуда: Russia

Сообщение Firestorm » 19.05.2003 (Пн) 16:52

...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________

ZeroX
Бывалый
Бывалый
 
Сообщения: 207
Зарегистрирован: 29.04.2003 (Вт) 12:36
Откуда: Мой адрес не дом и не улица, мой адрес Советский Союз

Сообщение ZeroX » 21.05.2003 (Ср) 10:09

Если хочешь пользоваться контролом, то держи:
http://www.vbnet.ru/activex/activexdownload.asp?id=90
Там таких глюков нет :wink:
Каждый warning мечтает стать error'om


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

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

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

    TopList