Миминизация
Home Up Автозапись Буфер обмена Долой пробелы DOS-программы Контролы в массиве Редактор VB Скрытые папки INI-файлы Лог-файлы Миминизация Звук в MP3 Советы

Вот рабочий пример.... Сложного нет ничего. У меня при минимизации
анимация в систрее идет, бабочка крылышками махает :-)).

Option Explicit

Private Declare Function Shell_NotifyIcon Lib "shell32" Alias
"Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As
Boolean

Private Const NIM_ADD = &H0
Private Const NIM_MODIFY = &H1
Private Const NIM_DELETE = &H2
Private Const WM_MOUSEMOVE = &H200
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_LBUTTONUP = &H202
Private Const WM_RBUTTONDBLCLK = &H206
Private Const WM_RBUTTONDOWN = &H204
Private Const WM_RBUTTONUP = &H205

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

Dim theForm As NOTIFYICONDATA

Private Sub Form_Load()
Me.Caption = "Клиент ФППИ: " + Autoanswer
Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2

' запись размера структуры
theForm.cbSize = Len(theForm)

' Установка хедера иконки
theForm.hWnd = picNotifier.hWnd
frmFPPIcl.Icon = LoadResPicture(10, vbResIcon)
theForm.hIcon = Me.Icon
theForm.uId = 1&

'Установка Флажков
'в данном случие показывать иконку,
' отображать TOOLTIP
' передовать события в форму
theForm.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE

'Источник событий мышка
theForm.ucallbackMessage = WM_MOUSEMOVE

'Строка тултипа
theForm.szTip = "Клиент ФППИ" & Chr$(0)

Shell_NotifyIcon NIM_ADD, theForm
Me.Hide
App.TaskVisible = False

optSendByHand.Value = True
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
' We also need to remove it when the program is ended.

' Change theForm's cbSize to theForm's length.
theForm.cbSize = Len(theForm)

' Change theForm's hWnd to picNotifier's hWnd.
theForm.hWnd = picNotifier.hWnd

' Change theForm's uId to 1&.
theForm.uId = 1&

' Remove it from the TaskBar.
Shell_NotifyIcon NIM_DELETE, theForm

End Sub

Private Sub picNotifier_MouseMove(Button As Integer, Shift 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
'Если DoubleClick
Case WM_LBUTTONDBLCLK:
' Запретим анимацию иконки
tmrAniB.Enabled = False
' и восстановим старую
picNotifier.Picture = LoadResPicture(10, vbResIcon)
theForm.hIcon = picNotifier.Picture
Shell_NotifyIcon NIM_MODIFY, theForm
' Окно в нормальный размер
Me.WindowState = 0
' и покажем его
Me.Show
'Если левая Кнопка нажата
Case WM_LBUTTONDOWN:

'Если левая Кнопка Отжата
Case WM_LBUTTONUP:

'Правая кнопка Click
Case WM_RBUTTONDBLCLK:

'Если Правая Кнопка нажата
Case WM_RBUTTONDOWN:

'Если Правая Кнопка Отжата
Case WM_RBUTTONUP:
PopupMenu mnuSysTrayMenu
End Select
Rec = False
End If

End Sub

Private Sub tmrAniB_Timer()
picNotifier.Picture = LoadResPicture(ResNumB, vbResIcon)
theForm.hIcon = picNotifier.Picture

Shell_NotifyIcon NIM_MODIFY, theForm

ResNumB = ResNumB + 1
If ResNumB > 17 Then
ResNumB = 2
End If
End Sub

На ваши вопросы отвечал Калеев Сергей Александрович

 

Home ] Up ] О группе ] Статьи ] Исходники ] Орфография ] Проекты ] Наша рассылка ]

Хостинг от uCoz