Seite 1 von 1

MouseOver Scrolling im Kontextmenü

Verfasst: 02.11.2004 22:25
von Lukaso
Hallo,

ich habe ein Kontextmenü (Rechtsklickmenü) in meinem Player, darin habe ich eine Unterrubrik Namens "Playlist" darin sind alle Musikstücke drinn, nun habe ich dort ein Menü mit 500 Musikdateien. Das Menü ist jetzt Größer wie der Bildschirm, nun habe ich dort 2 Pfeile um das Menü Hach bzw. Runterzuscrollen. Das Problem ich muß auf die Pfeile Klicken und draufbleiben damit er scrollt, ich möchte es aber so machen wie im Startmenü, dass es reicht mit der Maus über den Pfeil zu Fahren damit gescrollt wird. Desweiteren würde ich gerne die Scrollgeschwindigkeit erhöhen.

Hat jemand eine Lösung für mich??

Danke :allright:

Lukaso

Verfasst: 04.11.2004 00:26
von hardy
Ich habe mal ein Codebeispiel herausgekramt, in welchem das automatische Scrollen in einem Popupmenü funktioniert, wenn sich der Mauszeiger über dem Pfeil im Menü befindet. Vielleicht hilft es Dir weiter ...

Code: Alles auswählen

;***************************************************************************************************
;*   erstellen Popupmenu                                                                           *
;* =============================================================================================== *
;*   - automatisches scrollen, wenn Maus auf Pfeilen                                               *
;***************************************************************************************************


Global ia.l, winid, menuid, rec.RECT, curpos.POINT

ia=99   ;itemanzahl   

Procedure WindowProc(hWnd,Msg,wParam,lParam) 

  Select Msg 

;   ------------   rechte maustaste im fenster gedrueckt   ------------

    Case #wm_rbuttondown
      DisplayPopupMenu(0,WindowID(),0,0)
      
;   ------------   menuepunkt im popupmenu ausgewaehlt (maus ueber menupunkt)  ------------

    Case #wm_menuselect
      lw=wParam & $FFFF   ;loword: menupunkt-nummer
;      Debug "menupunkt " + Str(lw) + " mouseselect"
      menunr=lw
      hw=wParam >> 16 & $8000   ;highword: bit für flag "mouseselect" filtern                         
;      Debug "flag " + Str(hw)
      If hw=#mf_mouseselect
        Debug "wm_menuselect/mf_mouseselect: menupunkt = " + Str(lw)
        Debug "lparam="+Str(lParam)   ;handle menue
;        getmenuitemrect_(winid,menuid,menunr,rec) 
      EndIf 
      If hw=0   ;scroll-pfeil ausgewaehlt ?
        Debug "pfeil"
;       ------------   simuliere linke maustaste   ------------
        GetCursorPos_(cp.POINT)
        mouse_event_(#mouseeventf_absolute | #mouseeventf_leftdown, cp\x, cp\y,0,0)   ;simuliere linke maustaste
;        Debug "autoscroll"
      EndIf     
;    Case #pb_event_menu
;      menuid=EventMenuID()
;        Debug "menupunkt " + Str(menuid) + " mouseselect"
      
;   ------------   menuepunkt geklickt   ------------    
      
    Case #wm_command
      If (wParam >> 16 & $FFFF) = 0   ;hw/wparam=0: nachricht ist von menue
        ;        Debug "wm_command: " + Str(wparam & $FFFF)
        MessageRequester("","Menupunkt =" + Str(wParam & $FFFF),0)
      EndIf  
      
      
  EndSelect
  
ProcedureReturn #PB_ProcessPureBasicEvents 
EndProcedure

;===================================================================================================
;=   Hauptprogramm                                                                                 =
;===================================================================================================

winid=OpenWindow (0,200,200,600,400,#PB_Window_SystemMenu,"Test ...")
SetWindowCallback(@WindowProc())

menuid=CreatePopupMenu(0) 
Debug "anzahl der menuepunkte = " + Str(ia)
For z=1 To ia
  MenuItem(z,"Menuepunkt " + Str(z))
Next

Repeat
  event=WaitWindowEvent()
   Select event
;     Case #pb_event_menu
;       Debug "menuepunkt = " + Str(EventMenuID())
    Case #PB_Event_CloseWindow
      quit=1
  EndSelect
Until quit=1
End
      

Hardy

Verfasst: 04.11.2004 00:34
von Lukaso
@hardy
Habs damit hinbekommen!
Danke sehr :allright:

MFG Lukaso