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
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
MFG Lukaso