Выгрузить из трея прогу

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Юджин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 26.10.2005 (Ср) 12:49

Выгрузить из трея прогу

Сообщение Юджин » 22.03.2006 (Ср) 15:34

сначала был код
Код: Выделить всё

в модуль:
Public Const NIF_MESSAGE = &H1
Public Const NIF_ICON = &H2
Public Const NIF_TIP = &H4
Public Const NIM_ADD = &H0
Public Const NIM_MODIFY = &H1
Public Const NIM_DELETE = &H2
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_LBUTTONDBLCLK = &H203

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
Private NID As NOTIFYICONDATA

Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias _
"Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) _
As Long


Public Sub AddTrayIcon(IDhWnd As Long, Icon As Long, Text As String)
  NID.szTip = Left$(Text, 63) & Chr$(0)
  NID.uFlags = NIF_TIP + NIF_MESSAGE + NIF_ICON
  NID.uID = IDhWnd
  NID.cbSize = Len(NID)
  NID.hWnd = IDhWnd
  NID.uCallbackMessage = WM_RBUTTONDOWN
  NID.hIcon = Icon
  Res& = Shell_NotifyIcon(NIM_ADD, NID)
End Sub


Public Sub DeleteTrayIcon()
  NID.cbSize = Len(NID)
  Res& = Shell_NotifyIcon(NIM_DELETE, NID)
End Sub


Public Sub ItemModify(Icon As Long, Text As String)
  NID.uFlags = NIF_TIP + NIF_ICON
  NID.cbSize = Len(NID)
  NID.szTip = Left$(Text, 63) & Chr$(0)
  NID.hIcon = Icon
  Res& = Shell_NotifyIcon(NIM_MODIFY, NID)
End Sub


в форму:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Y = 0 And X = 513 * Screen.TwipsPerPixelX Then
 
  Me.WindowState = 0
  Me.Show
End If

End Sub

Private Sub Form_Resize()
  If Me.WindowState = 1 Then
    AddTrayIcon Me.hWnd, Me.Icon, "Пограмма такая-то"
    Me.Hide
  Else
    Me.Show
    DeleteTrayIcon
  End If
End Sub
теперь появилась необходимость развернуть из трея прогу если юзер соглашается посмотреть инфо и жмет "ok". сделал это через
Код: Выделить всё
If MsgBox("Появились новые материалы", vbExclamation) = vbOK Then
Me.Show
DeleteTrayIcon
End If
но программа почему-то, хоть и балтается в памяти и удаляется иконка трея, не разворачивает окно. что делать?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.03.2006 (Ср) 16:53

Нужно сначала развернуть окно, а потом уже показывать его...
А я все практикую лечение травами...

Юджин
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 26.10.2005 (Ср) 12:49

Сообщение Юджин » 22.03.2006 (Ср) 18:07

а как развернуть?

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.03.2006 (Ср) 18:12

Чесслово, забыл как это свойство в VB называется (посмотреть нет возможности). :cry: А в Delphi это WindowState. Можно устанавливать значения vbMinimized, vbNormal и vbMaximized.
А я все практикую лечение травами...

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 22.03.2006 (Ср) 18:48

Сюда смотрел? Я честно скажу - туда не заглядывал. Но если ты не заглядывал, то загляни.
Быть... или не быть. Вот. В чём вопрос?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 92

    TopList