Страница: 1 |
Страница: 1 |
Вопрос: Сворачивание окна и иконка в Systray
Добавлено: 21.01.07 08:11
Автор вопроса: Эндрю
Здраствуйте.
Делаю программу с нестандартным окном.
Кнопку закрыть я сделал,здесь ничего сложного,а вот кнопку свернуть решил сделать так,чтобы при сворачивании ее иконка появлялась около часов.
Вот проблема:свернуть ее у меня получилось,а как сделать,чтобы она разворачивалась?
Dim WithEvents cTray As TrayIcon
Private Sub Form_Load()
Set cTray = New TrayIcon
End Sub
'---------
Private sub Cmd_Click()
cTray.hwnd = hwnd
cTray.Icon = Icon
cTray.ToolTipText = "Название"
cTray.Add
Form1.visible=false
'---------
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
cTray.CallEvent X, Y
После нажатия,форма становится неидимой,около часов появляется иконка.
При помощи:
Private Sub cTray_OnIcon(MouseButton As Integer)
Debug.Print MouseButton
If MouseButton = TRAYICON_MOUSE_LEFTDBLCLICK Then Form1.visible=true
End Sub
предполагалось,что при двойном щелчке,она снова станет видимой,вот только что-то не выходит...
Или может не стоит оно того???Может просто сделать обычную кнопку свернуть?
Ответы
Всего ответов: 1
Номер ответа: 1
Автор ответа:
Алексей
black admin
ICQ: 261779681
Вопросов: 87
Ответов: 633
Web-сайт:
Профиль | | #1
Добавлено: 21.01.07 09:09
для трея, где-то на сайте вроде есть код с использованием PictureBox:
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 picNotifier_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
'Обработка событий
On Error Resume Next
Static Rec As Boolean, Msg As Long
Msg = X / Screen.TwipsPerPixelX
If Rec = False Then ' Чтоб не повторять Запуск
Rec = True
Select Case Msg
'Если DoubleClick
Case WM_LBUTTONDBLCLK:
Me.WindowState = vbNormal
Me.Show
'Если левая Кнопка нажата
Case WM_LBUTTONDOWN:
'Если левая Кнопка Отжата
Case WM_LBUTTONUP:
'Правая кнопка Click
Case WM_RBUTTONDBLCLK:
'Если Правая Кнопка нажата
Case WM_RBUTTONDOWN:
'Если Правая Кнопка Отжата
Case WM_RBUTTONUP:
'PopupMenu mnuPopMenu
End Select
Rec = False
End If
End Sub
на форме должен быть PictureBox с именем picNotifier.
вот код для вывода иконки в трей:
theForm.cbSize = Len(theForm)
' Установка хедера иконки
theForm.hwnd = picNotifier.hwnd
theForm.hIcon = picNotifier.Picture
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