Я пробовал, создавал формы, которые скидывали иконку в TrayBar и у них вызывал меню, кликом без всяких проблем. Но только стоило этот код встроить в мое приложение, как снова Бэйсик начинает выдавать баги. Судя по всему проблема в том, что на самой форме не отображается меню, а почему не пойму? У формы свойство BorderStyle-1Fixsed Single, может быть по этой причине? Хотя сомневаюсь. Код моего приложения такой:
Пользуйтесь, блин, форматированием кода, а то будете получать замечания за неуважение к участникам форума.
- Код: Выделить всё
Dim nid As NOTIFYICONDATA
Private Sub cmdShow_Click()
If Form1.Height = 1605 Then
Form1.Height = 1050
Else
Form1.Height = 1605
End If
Form1.Width = 1290
If Text2.Visible = False Then
Text2.Visible = True
Else
Text2.Visible = False
End If
If Label1.Visible = False Then
Label1.Visible = True
Else
Label1.Visible = False
End If
End Sub
Private Sub Form_Load()
nid.cbSize = Len(nid)
nid.hWnd = Form1.hWnd
nid.uID = vbNull
nid.uFlags = NIF_ICON Or NIF_TIP Or NIF_MESSAGE
nid.uCallbackMessage = WM_MOUSEMOVE
nid.hIcon = Form1.Icon
nid.szTip = "Часы и календарь" & vbNullChar
Shell_NotifyIcon NIM_ADD, nid
Form1.Height = 1050
Form1.Width = 1290
If App.PrevInstance = True Then
MsgBox "Эй, эй, ну ты ЧЁ?! Ты ЧЁ?! Спишь ЧЁ ЛИ?!!!", 16, "Думай ЧЁ делаешь!"
End
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("А мона не. А?", vbYesNo, "Спать!") = vbYes Then
Unload Me
Set Form1 = Nothing
Else
Cancel = 1
End If
End Sub
Private Sub Timer1_Timer()
Text1.Text = Time
End Sub
Private Sub Timer2_Timer()
Text2.Text = Date
xday = Weekday(Date, vbUseSystemDayOfWeek = vbSunday)
If xday = 7 Then
Label1.Caption = "Воскресенье"
xday = Weekday(Date, vbUseSystemDayOfWeek = vbMonday)
ElseIf xday = 1 Then
Label1.Caption = "Понедельник"
xday = Weekday(Date, vbUseSystemDayOfWeek = vbTuesday)
ElseIf xday = 2 Then
Label1.Caption = "Вторник"
xday = Weekday(Date, vbUseSystemDayOfWeek = vbWednesday)
ElseIf xday = 3 Then
Label1.Caption = "Среда"
xday = Weekday(Date, vbUseSystemDayOfWeek = vbThursday)
ElseIf xday = 4 Then
Label1.Caption = "Четверг"
xday = Weekday(Date, vbUseSystemDayOfWeek = vbFriday)
ElseIf xday = 5 Then
Label1.Caption = "Пятница"
xday = Weekday(Date, vbUseSystemDayOfWeek = vbSaturday)
ElseIf xday = 6 Then
Label1.Caption = "Суббота"
End If
End Sub
Это код модуля:
- Код: Выделить всё
Option Explicit
Public Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean 'Константы для добавления, удаления и модификации вашей икноки:
Public Const NIM_ADD = 0
Public Const NIM_MODIFY = 1
Public Const NIM_DELETE = 2
Public Const WM_MOUSEMOVE = &H200
Public Const NIF_MESSAGE = 1
Public Const NIF_ICON = 2
Public Const NIF_TIP = 4
Public Const WM_RBUTTONDOWN = &H204
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
Моя проблема в том, что я кликом по иконке правой кнопки мыши не могу в трейбаре вызвать меню. Подскажите ламеру, где я торможу? Кому нетрудно, скиньте подсказку на мыло GluMORG6@yandex.ru. Заранее благодарю, Всех.