Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 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-сайт: aleksey.nemiro.ru
 Профиль | | #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

Ответить

Страница: 1 |

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



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