Страница: 1 |
|
Вопрос: VB6 Ламер просит помощи – Не могу вызвать Pop
|
Добавлено: 17.03.06 20:29
|
|
Автор вопроса: GluMORG6
|
Здравствуйте Все, кто откликнулся на мою, наверняка уже набившую оскомину, просьбу. Прошу меня извинить за мой ламерский непрофессионализм, но дело в том, что за изучение написания программных приложений на VB6, я взялся совсем недавно, и из-за недостатка знаний и опыта, в ходе создания программного кода довольно часто сталкиваюсь с затруднениями в решении самых простых проблем. Вот и сейчас, уже несколько дней не могу решить простую проблему – “Размещение иконки в Tray”.
Нет, не поймите меня неправильно. Скинуть иконку в трейбар, я смог без проблем, загвоздка, правильнее будет сказать, мой ламерский тормоз, тормознул меня на вызове меню кликом мыши по иконке. Тот код модуля, который я здесь привожу в качестве примера, я взял на форуме. В своём модуле, я использовал для обращения к API – функции аналогичный код:
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_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_MBUTTONDBLCLK = &H209
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
Это код моего модуля:
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_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const WM_LBUTTONDBLCLK = &H203
Public Const WM_RBUTTONDOWN = &H204
Public Const WM_RBUTTONUP = &H205
Public Const WM_RBUTTONDBLCLK = &H206
Public Const WM_MBUTTONDOWN = &H207
Public Const WM_MBUTTONUP = &H208
Public Const WM_MBUTTONDBLCLK = &H209
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
Собственно разницы никакой, проблема с кодом в форме, а именно, как в коде формы грамотно вписать строку вызова “PopupMenu”, и нужно ли при этом добавить что-либо в код модуля. Т. к., программёр я начинающий, поэтому тупой ламер, и у меня большая просьба к знающим. Пожалуйста разжуйте мне всё подробно. Сам я перепробовал всё, но вот мой VB6 на этом месте при запуске приложения выдаёт “Ошибку компиляции”. Буду признателен тем, кто ответит мне на мыло GluMORG6@yandex.ru.
Ответить
|
Номер ответа: 2 Автор ответа: GluMORG6
Вопросов: 1 Ответов: 2
|
Профиль | | #2
|
Добавлено: 17.03.06 21:56
|
Благодарю.
Но тупить продолжаю, сама по себе форма работает без проблем. Меню кликом вызывается, всё нормально. Но как только пытаюсь встроить вызов меню в свой код:
 im 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
повторяется одна и та же история, VB6 выдаёт ошибку. Не могу понять где я торможу?
Ответить
|
Страница: 1 |
Поиск по форуму