Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Прокрутка колесика мыши Добавлено: 16.11.07 20:12  

Автор вопроса:  - MaAs† -™ | ICQ: 233628153 
Вопрос собственно вот в чем: Есть ли вообще в VB6 событие, реагирующее на прокрутку колесика? или это считается как нажатие клавиши? Если так, то какой?

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #1 Добавлено: 16.11.07 21:21
За это отвечает сообщение WM_MOUSEWHEEL.
Стандартые элементы в vb не генерируют этого события. Но всё можно перехватить.

Ответить

Номер ответа: 2
Автор ответа:
 EUGY



Вопросов: 0
Ответов: 454
 Профиль | | #2 Добавлено: 16.11.07 22:06
Вот например usercontrol:
Option Explicit

Private Type MSG
    hwnd As Long
    message As Long
    wParam As Long
    lParam As Long
    time As Long
    pt As Long
End Type
Private Const WM_MOUSEWHEEL = &H20A
Private Declare Function GetMessage Lib "user32" Alias "GetMessageA" (lpMsg As MSG, ByVal hwnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long) As Long
Private Declare Function TranslateMessage Lib "user32" (lpMsg As MSG) As Long
Private Declare Function DispatchMessage Lib "user32" Alias ";DispatchMessageA" (lpMsg As MSG) As Long
Private Declare Sub PostQuitMessage Lib "user32" (ByVal nExitCode As Long)

Event MouseWheel(orien As Long)

Private Function LWORD(param As Long) As Long
LWORD = param And &HFFFF&
End Function

Private Function HWORD(param As Long) As Long
HWORD = param \ &H10000 And &HFFFF&
End Function

Private Sub UserControl_Hide()
    If UserControl.Ambient.UserMode = True Then PostQuitMessage 0
End Sub

Private Sub UserControl_Show()
    Dim pmsg As MSG
    Dim rotate As Long
    If UserControl.Ambient.UserMode = True Then
        While (GetMessage(pmsg, 0, 0, 0))
            If pmsg.message = WM_MOUSEWHEEL Then
             If pmsg.wParam > 0 Then
                rotate = HWORD(pmsg.wParam)
             Else
                rotate = HWORD(pmsg.wParam) - 65536
             End If
             'Debug.Print rotate
             RaiseEvent MouseWheel(rotate)
            End If
            TranslateMessage pmsg
            ;DispatchMessage pmsg
        Wend
    End If
End Sub


Private Sub UserControl_MouseWheel(orien As Long)
    ;Debug.Print orien ' направление вращения
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 - MaAs† -™



ICQ: 233628153 

Вопросов: 13
Ответов: 29
 Профиль | | #3 Добавлено: 17.11.07 20:27
О, спасибо, вопрос закрыт

Ответить

Номер ответа: 4
Автор ответа:
 VβÐ



Вопросов: 15
Ответов: 194
 Web-сайт: www.homacosoft.com
 Профиль | | #4
Добавлено: 05.01.09 11:42
Di

Ответить

Номер ответа: 5
Автор ответа:
 VβÐ



Вопросов: 15
Ответов: 194
 Web-сайт: www.homacosoft.com
 Профиль | | #5
Добавлено: 05.01.09 11:42
ispatchMessage pmsg
?! Опять косяки со смайлами...

Ответить

Номер ответа: 6
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #6
Добавлено: 06.01.09 13:48
Бля, да юзайте вы теги форума! [sоurce], а не [cоde] !

Ответить

Страница: 1 |

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



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