Rechtsklick bei Editorgadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Rechtsklick bei Editorgadget

Beitrag von Velindos »

Hallo,
wenn ich auf das Image fahre, funktioniert die rechte Maustaste nicht mehr.

Code: Alles auswählen

; EditorGadget & ImageGadget TEST
;{
Enumeration
  #Window_0
EndEnumeration
; Variablen
Enumeration
  #String_0
  #String_1
  #Text_0
  #Text_1
  #Text_2
  #Text_3
  #ImageGadget8
EndEnumeration
;}

Procedure WinCallback(hWnd, uMsg, wParam, lParam)
  Protected result = #PB_ProcessPureBasicEvents
  
  Select uMsg
    Case #WM_CONTEXTMENU
      If GadgetID(#String_0) = wParam
        DisplayPopupMenu(#String_0, WindowID(#Window_0))
      EndIf
      If GadgetID(#ImageGadget8) = wParam
        DisplayPopupMenu(#ImageGadget8, WindowID(#Window_0))
      EndIf
      
  EndSelect
  
  ProcedureReturn result
EndProcedure

If OpenWindow(#Window_0, 220, 0, 470, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  EditorGadget(#String_0, 120, 50, 150, 140)
  ImageGadget (#ImageGadget8,280,50,70,70,test, #PB_Image_Border )
  
  SendMessage_(GadgetID(#String_0), #EM_SETTARGETDEVICE, #Null, 0)
  TextGadget(#Text_0, 120, 30, 240, 20, "Hier geht der rechte Mausklick nicht!")
  TextGadget(#Text_2, 120, 10, 140, 20, "Mein EditorGadget")
  StringGadget(#String_1, 120, 230, 240, 20, "Test")
  TextGadget(#Text_1, 120, 210, 170, 20, "Mein Stringgadget")
  TextGadget(#Text_3, 120, 260, 240, 20, "Hier geht der rechte Mausklick!")
  If CreatePopupMenu(#String_0)
    MenuItem(1, "einfügen")
    MenuItem(2, "Bearbeiten")
    
  EndIf
  
  
  SetWindowCallback(@WinCallback())
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow : Break
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            SendMessage_(GadgetID(#String_0), #WM_PASTE, 0, 0)
            
          Case 2
            Debug "Eingefügt!"
            
        EndSelect
    EndSelect
  ForEver
EndIf 
Verstehe ich das richtig, die funktioniert nur bei EditorGadget und StringGadget?

Gruss Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Rechtsklick bei Editorgadget

Beitrag von RSBasic »

Du möchtest einen Rechtsklick beim ImageGadget abfragen?
Schau in der PB-Hilfe nach, unter: EventType().

Beispiel:

Code: Alles auswählen

EnableExplicit

Define EventID

CreateImage(1,100,100,32)

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
  ImageGadget(1,10,10,0,0,ImageID(1),0)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
        Case 1
          Select EventType()
            Case #PB_EventType_RightClick   
              Debug "Rechte Maustaste wurde gedrückt..."
          EndSelect
          
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Rechtsklick bei Editorgadget

Beitrag von Kiffi »

Code: Alles auswählen

CreatePopupMenu(#String_0)
bevor es zu Folgefehlern kommt: ich glaube, dass da bei
Dir ein Verständnisfehler vorliegt.

Du erzeugst mit CreatePopupMenu() kein PopupMenü für
ein bestimmtes Gadget (hier: Dein #String_0). PopupMenues
werden immer gadgetunabhängig erzeugt. Wo es dann aufpoppt
entscheidest Du im Code.

Vergib für Deine Menues eindeutige IDs.

Sowas hier: DisplayPopupMenu(#ImageGadget8, ...
ist dann auch entsprechend falsch.


Zum eigentlichen Problem: Mausklick aufs Image kannst Du auf
#PB_EventType_RightClick abfragen. Dafür braucht's IMO keinen Callback.

Grüße ... Kiffi
a²+b²=mc²
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

Re: Rechtsklick bei Editorgadget

Beitrag von ts-soft »

Ich werde Alt, schon wieder zu langsam.

#WM_CONTEXTMENU gibts es nicht für alle Controls, meist für welche, die Text enhalten.

Den Rest haben die anderen schon gesagt, hier Dein EventLoop, wobei Du natürlich ein
anderes Popup anzeigen solltest:

Code: Alles auswählen

  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow : Break
      Case #PB_Event_Menu
        Select EventMenu()
          Case 1
            SendMessage_(GadgetID(#String_0), #WM_PASTE, 0, 0)
           
          Case 2
            Debug "Eingefügt!"
           
        EndSelect
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #ImageGadget8
            Select EventType()
              Case #PB_EventType_RightClick
                DisplayPopupMenu(#String_0, WindowID(#Window_0))
              Default
                Debug EventType()
            EndSelect
        EndSelect
        
    EndSelect
  ForEver
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
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Rechtsklick bei Editorgadget

Beitrag von Velindos »

Hallo,
da habt Ihr mir auf die Sprünge geholfen. Wollte natürlich wie Kiffi schrieb, gleich eines für jedes Gadget. Hab jetzt euren Vorschlag eingearbeitet und siehe da funkt wenn ich am ImageGadget die rechte Maustaste drücke.
Nochmals besten Dank an euch, mit dieser Lösung ist besser zu arbeiten.

Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Benutzeravatar
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Rechtsklick bei Editorgadget

Beitrag von Velindos »

Hallo,
habe die Lösung eingearbeitet, aber jetzt kommts, jetzt funktioniert die Sache am Image aber nicht am Editor Gadget. Warum nicht, kann mir das einer sagen?

Code: Alles auswählen

EnableExplicit

Enumeration
  #String_0
  #String_2
EndEnumeration

Define EventID

CreateImage(1,100,100,32)

If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget)
  ImageGadget(1,10,10,0,0,ImageID(1),0)
  StringGadget(2,200,10,200,20,"Klicke doppelt linke Maustaste...",0)
  EditorGadget(3, 120, 50, 150, 140)
  
  If CreatePopupMenu(#String_0)
    MenuItem(1, "einfügen")
    MenuItem(2, "einfügen2")
  EndIf
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
          
        Case 1
          Select EventType()
            Case #PB_EventType_RightClick 
              DisplayPopupMenu(#String_0, WindowID(0))
              Debug "Rechte Maustaste wurde gedrückt..."
          EndSelect
          
        Case 3
          Select EventType()
            Case #PB_EventType_RightClick 
              DisplayPopupMenu(#String_0, WindowID(0))
              Debug "Rechte Maustaste wurde gedrückt..."
          EndSelect

  
  
EndSelect
EndIf
If EventID = #PB_Event_CloseWindow
  End
EndIf
ForEver
EndIf
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
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

Re: Rechtsklick bei Editorgadget

Beitrag von ts-soft »

Weil das EditorGadget dieses Event nicht unterstützt. Code für das EditorGadget hast doch bekommen,
also nutze ihn für das EditorGadget und nicht für das ImageGadget.
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
Velindos
Beiträge: 598
Registriert: 15.11.2010 10:56

Re: Rechtsklick bei Editorgadget

Beitrag von Velindos »

Hallo,
ok, war mir nicht sicher! Danke!
Gruss ... Velindos
Windows 7/8/8.1/10 (32/64-Bit) |Ubuntu 10.4 (64-Bit) |Purebasic 5.71 LTS (32/64-Bit)
Antworten