Страница: 1 |
Заранее сорри, если офоппик. Уже не один десяток раз здесь задавался вопрос, как загнать прогу в трей. Ниже привожу на всякий случай код, но вот никогда не поднимался вопрос, а как у появившейся в трее иконки вызвать контекстное меню, ну типа как PopUpMenu у всяких контролов на форме. Люди, может кто чего посоветует? 'КОД МОДУЛЯ Declare Function Shell_NotifyIconA Lib "SHELL32" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Integer Public Const NIM_ADD = 0 Type NOTIFYICONDATA Public Function SetTrayIcon(Mode As Long, hWnd As Long, Icon As Long, tip As String) As Long 'КОД ФОРМЫ Private Sub Form_Load() Private Sub Form_Unload(Cancel As Integer)
Тебе просто не хватает обработчика событий для иконки. Например как 'Источник событий мыша 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 |
Вопрос: Трей и меню
Добавлено: 06.09.02 10:13
Автор вопроса: Sergey
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
cbSize As Long
hWnd As Long
uID As Long
uFlags As Long
uCallbackMessage As Long
hIcon As Long
szTip As String * 64
End Type
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
SetTrayIcon NIM_ADD, Me.hWnd, Me.Icon, "Проверка"
End Sub
SetTrayIcon NIM_DELETE, Me.hWnd, 0&, ""
End Sub
Ответы
Всего ответов: 1
Номер ответа: 1
Автор ответа:
POST
Вопросов: 14
Ответов: 269
Web-сайт:
Профиль | | #1
Добавлено: 06.09.02 10:38