Seite 1 von 2

rechtsklick im Static Control

Verfasst: 28.09.2006 15:19
von Konne
Hallo wollte nur mal Fragen wie das Event heißt welches ausgelöst wird wenn ein Static Control mit der Rechten maustaste geklicked wird.

Verfasst: 28.09.2006 16:44
von Fluid Byte
Geht's etwas präziser? Es werden nämlich mehrere Nachrichten gesendet. Außerdem macht es einen Unterschied ob das STATIC Fenster mit oder ohne den #SS_NOTIFY Stil erstellst.

Ohne #SS_NOTIFY Stil:

- #WM_SETCURSOR
- #WM_NCHITTEST
- #WM_RBUTTONDOWN

Mit #SS_NOTIFY Stil:

- #WM_SETCURSOR
- #WM_MOUSEACTIVATE
- #WM_PARENTNOTIFY

Verfasst: 02.10.2006 23:09
von Konne
Hmm also sagen wir ich will die Klicks eines ImageGadgets von PB abfangen ohne es zu modifizoieren, wie geht das am besten?

Verfasst: 02.10.2006 23:15
von ts-soft

Code: Alles auswählen

DisableGadget(ImageGadget, #True)
:wink:

Verfasst: 03.10.2006 12:52
von Konne
Ja aber ich will die klicks ja schon noch mitbekommen. Sagen wir einfach ich würde gerne die Klicks über ein Callback und nicht über die PB Funktionen mitbekommen.

Verfasst: 03.10.2006 12:53
von Kaeru Gaman
die "PB Funktionen" verarbeiten nur, was der Callback übriglässt.
wenn du also im Callback dementsprechend reagierst, solltest du garnix umstellen müssen.

Verfasst: 03.10.2006 14:16
von mk-soft
Eigene SubclassProc in Gadget einbinden. (Callback)

Code: Alles auswählen

;-TOP
; Kommentar     : SubclassProc für Gadgets einbinden.
; Author        : mk-soft
; Second Author : 
; Datei         : *.pb
; Version       : 1.01
; Erstellt      : 03.10.2006
; Geändert      :
; 
; Compilermode  :
;
; ***************************************************************************************

;- Konstanten
Enumeration
  #Window
EndEnumeration

Enumeration
  #Menu
EndEnumeration

Enumeration
  #Menu_Exit
EndEnumeration

Enumeration
  #Statusbar
EndEnumeration

Enumeration
  #Button
EndEnumeration

; ***************************************************************************************

;- Globale Variablen
Global exit = 0
;- Original WndProc
Global wpOrigButtonProc.l

; SubclassProc für Button
Procedure ButtonSubclassProc(hwnd, uMsg, wParam, lParam)

  Select uMsg
  
  Case #WM_RBUTTONDOWN
    Debug "Rechter Button ab"
    ProcedureReturn #True
  
  EndSelect
  ; Originale Proc aufrufen  
  ProcedureReturn CallWindowProc_(wpOrigButtonProc, hwnd, uMsg, wParam, lParam)
  
EndProcedure

;- Fenster
style = #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget
If OpenWindow(#Window, #PB_Ignore, #PB_Ignore, 400, 300, "Fenster", style)
  ; Menu
  If CreateMenu(#Menu, WindowID(#Window))
    MenuTitle("&Datei")
      MenuItem(#Menu_Exit, "Be&enden")
  EndIf
  ; Statusbar
  CreateStatusBar(#Statusbar, WindowID(#Window))
  ; Gadgets
  If CreateGadgetList(WindowID(#Window))
    ButtonGadget(#Button, 10, 10, 120, 25, "Hallo Welt")
  EndIf
  
  ; Für den Button eine SubclassProc einbinden.
  wpOrigButtonProc = SetWindowLong_(GadgetID(#Button), #GWL_WNDPROC, @ButtonSubclassProc())
  
  ;-- Hauptschleife
  Repeat
    event   = WaitWindowEvent()
    window  = EventWindow()
    menu    = EventMenu()
    gadget  = EventGadget()
    type    = EventType()
    
    Select event
      Case #PB_Event_Menu                       ; ein Menü wurde ausgewählt
        Select menu
          Case #Menu_Exit
            Exit = 1
        EndSelect
      Case #PB_Event_Gadget                    ; ein Gadget wurde gedrückt
        Select gadget
          Case #Button
            If type = #PB_EventType_LeftClick
              Debug "Linker Button Klick"
            EndIf
        EndSelect
      Case #PB_Event_CloseWindow                ; das Schließgadget vom Fenster wurde gedrückt
        Exit = 1
      Case #PB_Event_Repaint                    ; der Fensterinhalt wurde zerstört und muss neu gezeichnet werden (nützlich für 2D Grafik-Operationen) 
      Case #PB_Event_SizeWindow                 ; das Fenster wurde in der Größe verändert
      Case #PB_Event_MoveWindow                 ; das Fenster wurde verschoben
      Case #PB_Event_ActivateWindow             ; das Fenster wurde aktiviert (hat den Fokus erhalten)
      Case #PB_Event_SysTray                    ; das SysTray wurde aktiviert
    
    EndSelect
    
  Until Exit
EndIf

; Vor löschen des Gadget auf die Original Proc wieder umleiten
SetWindowLong_(GadgetID(#Button), #GWL_WNDPROC, wpOrigButtonProc)
FF :wink:

Verfasst: 03.10.2006 21:19
von Konne
Leute danke für all die erklärungen aber ich bin ja nicht blöd was ich will ist:

Ich will wissen wie die Events heißen wenn ein Static Contzrol geklickt wird. Da ich dass in der MSDN nicht gefunden habe. (auser Linksklick) ich will aber auch die anderen Klciks. Also welche Messages werden von einem Static Control an seinen Parent gesendet wenn es geklickt wird ?

Verfasst: 03.10.2006 22:08
von Ligatur
Konne hat geschrieben:Leute danke für all die erklärungen aber ich bin ja nicht blöd was ich will ist:

Ich will wissen wie die Events heißen wenn ein Static Contzrol geklickt wird. Da ich dass in der MSDN nicht gefunden habe. (auser Linksklick) ich will aber auch die anderen Klciks. Also welche Messages werden von einem Static Control an seinen Parent gesendet wenn es geklickt wird ?
Klick mit rechter Maustaste geht mit WM_CONTEXTMENU.
Einen Klick mit der mittleren Maustaste geht so viel ich weiß nur über WM_MBUTTONDOWN und WM_MBUTTONUP und den Rest selber machen

Verfasst: 03.10.2006 23:09
von Konne
Was genau meinst du mit selber machen?