Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Трей и меню Добавлено: 06.09.02 10:13  

Автор вопроса:  Sergey

Заранее сорри, если офоппик. Уже не один десяток раз здесь задавался вопрос, как загнать прогу в трей. Ниже привожу на всякий случай код, но вот никогда не поднимался вопрос, а как у появившейся в трее иконки вызвать контекстное меню, ну типа как PopUpMenu у всяких контролов на форме. Люди, может кто чего посоветует?

 

'КОД МОДУЛЯ

Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Integer

Public Const NIM_ADD = 0
Public Const NIM_MODIFY = 1
Public Const NIM_DELETE = 2
Public Const NIF_MESSAGE = 1
Public Const NIF_ICON = 2
Public Const NIF_TIP = 4

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

Public Function SetTrayIcon(Mode As Long, hWnd As Long, Icon As Long, tip As String) As Long
Dim nidTemp As NOTIFYICONDATA
nidTemp.cbSize = Len(nidTemp)
nidTemp.hWnd = hWnd
nidTemp.uID = 0&
nidTemp.uFlags = NIF_ICON Or NIF_TIP
nidTemp.uCallbackMessage = 0&
nidTemp.hIcon = Icon
nidTemp.szTip = tip & Chr$(0)
SetTrayIcon = Shell_NotifyIconA(Mode, nidTemp)
End Function

'КОД ФОРМЫ

Private Sub Form_Load()
SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Проверка"
End Sub

Private Sub Form_Unload(Cancel As Integer)
SetTrayIcon NIM_DELETE, Me.hWnd, 0&, ""
End Sub 

Ответить

  Ответы Всего ответов: 1  

Номер ответа: 1
Автор ответа:
 POST



Вопросов: 14
Ответов: 269
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 06.09.02 10:38

Тебе просто не хватает обработчика событий для иконки.

Например как

'Источник событий мыша

nidTemp.ucallbackMessage = WM_MOUSEMOVE

'Строка тултипа

nidTemp.szTip = "administrators@post.cz" & Chr$(0)

Private Const WM_LBUTTONDBLCLK = &H203

Private Const WM_LBUTTONDOWN = &H201

Private Const WM_LBUTTONUP = &H202

Private Const WM_RBUTTONDBLCLK = &H206

Private Const WM_RBUTTONDOWN = &H204

Private Const WM_RBUTTONUP = &H205

Private Const WM_MOUSEMOVE = &H200

'Этот код нужно вставить в любой контрол поддерживающий событие Mouse_move и вызывать как reagevent button, x, y

Public Sub ReagEvent(Button As Integer, X As Single, Y As Single)

Static Rec As Boolean, Msg As Long

Msg = X / Screen.TwipsPerPixelX

If Rec = False Then ' Что бы не повторялось

Rec = True

Select Case Msg

'левый клик

Case WM_LBUTTONDBLCLK:

Forma.Show

'левый "mouse down"

Case WM_LBUTTONDOWN:

'левый "mouse up"

Case WM_LBUTTONUP:

'правый клик

Case WM_RBUTTONDBLCLK:

'правый "mouse down"

Case WM_RBUTTONDOWN:

'Например выкинем менюшку.

Forma.PopupMenu Forma.mnuMain, , , , Forma.mnuExit

'правый "mouse up"

Case WM_RBUTTONUP:

End Select

Rec = False

End If

End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам