rechtsklick im Static Control

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

rechtsklick im Static Control

Beitrag 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.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag 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
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Hmm also sagen wir ich will die Klicks eines ImageGadgets von PB abfangen ohne es zu modifizoieren, wie geht das am besten?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Code: Alles auswählen

DisableGadget(ImageGadget, #True)
:wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag 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.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag 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:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag 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 ?
Benutzeravatar
Ligatur
Beiträge: 196
Registriert: 09.07.2006 00:41

Beitrag 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
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Was genau meinst du mit selber machen?
Gesperrt