Event wenn sich die Mouse in der TitleBar befindet ?!

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Event wenn sich die Mouse in der TitleBar befindet ?!

Beitrag von nco2k »

hi folks,

wie finde ich am elegantesten heraus, ob sich die maus gerade in der titelleiste befindet??

c ya,
nco2k
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Hab mal ein bisschen mit CallbackProc rumgespielt. Vielleicht kannst du das dafür brauchen. Sicher geht das bestimmt noch einfacher.

Code: Alles auswählen

;WindowEvents anzeigen

Procedure WindowCallBack(WindowID, Message, wParam, lParam) 
    Result = #PB_ProcessPureBasicEvents 
    Pos=wParam & $FFFF
    ;Debug Pos ; Teste hiermit, welche Events angezeigt werden
     If WindowID()
        Select Pos
       Case 0
        Debug "Event_InnerWindow"
       Case 1
        Debug "Event_Mouse_LeftClick"  
       Case 2
        Debug "Event_Maus über Title"
       Case 6
        Debug "Event_HScroll"
       Case 7
        Debug "Event_VScroll"
       Case 10
        Debug "Event_LeftSize"
       Case 11
        Debug "Event_RightSize"
       Case 12
        Debug "Event_TopSize"
       Case 15
        Debug "Event_BottonSize"
       Case 20
        Debug "Event_CloseWindow"
      EndSelect
     EndIf

    ProcedureReturn Result 
EndProcedure 

  If OpenWindow(0, 216, 30, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered , "New window ( 0 )") 
    If CreateGadgetList(WindowID(0)) 
      
      ;- 
      ScrollAreaGadget(0, 20, 20, 540, 260, 1080, 520, 10) 
      CloseGadgetList() 
      
    EndIf 
  EndIf 
 

SetWindowCallback(@WindowCallBack()) 


Repeat   
  
Until WaitWindowEvent() = #PB_EventCloseWindow 

End 
;
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

danke erstmal!

vielleicht kennt jemand noch eine lösung ohne callback?!

c ya,
nco2k
Benutzeravatar
rayman1970
Beiträge: 89
Registriert: 01.09.2004 16:10
Wohnort: Troisdorf bei Bonn
Kontaktdaten:

Beitrag von rayman1970 »

Code: Alles auswählen

OpenWindow(0, 216, 30, 600, 300,  #PB_Window_SystemMenu | #PB_Window_ScreenCentered ,"Test")
 
Repeat   
 event = WaitWindowEvent()
 
 If event = 160 ; ---------------
  If WindowMouseY() = -1
   Debug ("Auf Titel")
  EndIf
 EndIf ; -----------------------

Until event =  #PB_EventCloseWindow

End

Gruss Rayman
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

@rayman1970
die methode ist viel zu unsicher, da auch ein ereignis zurückgegeben wird, wenn sich die maus seitlich am rand des fensters oder ganz unten befindet.

c ya,
nco2k
Antworten