SubClasser у меня не пашет...

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

SubClasser у меня не пашет...

Сообщение lister » 11.03.2006 (Сб) 22:11

То ли руки кривые, то ли SubClasser для этого не предназначен...

Код: Выделить всё

Private Sub UserControl_Initialize()
  SubClasser.AddSubclassHook hWnd, Me, DoNotTransfer
 
End Sub

Private Function ISubclass_Callback(ByVal hWnd As Long, uMsg As Long, wParam As Long, lParam As Long, ByVal PrevProc As Long) As Long
  Dim typTME As tagTRACKMOUSEEVENT
  Static blnHot As Boolean
 
  Select Case uMsg
    Case WM_MOUSELEAVE
      Debug.Print "WM_MOUSELEAVE"
      blnHot = False
      Redraw BS_NORMAL
     
    Case WM_MOUSEHOVER
      Debug.Print "WM_MOUSEHOVER"
      blnHot = True
      Redraw BS_HOT
     
    Case WM_MOUSEMOVE
      Debug.Print "WM_MOUSEMOVE"
      If blnHot Then
        typTME.cbSize = LenB(typTME)
        typTME.hwndTrack = hWnd
        typTME.dwFlags = TME_HOVER Or TME_LEAVE
        typTME.dwHoverTime = 1
     
        TrackMouseEvent typTME
     
      End If
   
  End Select

  If PrevProc Then ISubclass_Callback = SubClasser.CallWindowProc(PrevProc, hWnd, uMsg, wParam, lParam)

End Function


WM_MOUSELEAVE и WM_MOUSEHOVER не отслеживаются

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.03.2006 (Вс) 5:25

Не надо в UserControl_Initialize ставить хуки. Хуки надо ставить как минимум в UserControl_ReadProperties, проверяя перед этим ambient.usermode, ибо ставить хук в режиме дизайна не надо...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 12.03.2006 (Вс) 9:43

Спасибо! Классная штука твой SubClasser!

GSerg, а какие WM_ от может отлавливать? Все?


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

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

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

    TopList