StringGadget Rechtsklick

Anfängerfragen zum Programmieren mit PureBasic.
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

StringGadget Rechtsklick

Beitrag von Andesdaf »

Hallo!

Als erstes: kann sein dass ich grade total ein Brett vor dem Kopf habe.

Es gibt kein Popupmenü für StringGadgets?

Code: Alles auswählen

Enumeration
  #WIN
  #STR
  #MBA
  #CHE
  #MIT
EndEnumeration

If OpenWindow(#WIN, 0, 0, 230, 90, "Event-Handling Beispiel...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)

   StringGadget  (#STR, 10, 10, 200, 20, "Klick mich")
   CheckBoxGadget(#CHE, 10, 40, 200, 20, "Markiere mich")

   If CreatePopupMenu(#MBA)
     MenuTitle("Menu")
     MenuItem(#MIT, "Eintrag 1")
   EndIf

   Repeat
     Event = WaitWindowEvent()
     
     Select Event
     
       Case #PB_Event_Gadget
         Select EventGadget()
           Case #STR
             If EventType() = #PB_EventType_RightClick
               DisplayPopupMenu(#MBA,WindowID(#WIN))
             EndIf
         EndSelect
       
     
     EndSelect
   Until Event = #PB_Event_CloseWindow
 EndIf
Da kommt immer nur das Standard-Menü von Windows. In der Hilfe zu EventType()
steht aber das StringGadget unter den unterstützten Gadgets dabei.

Bug? Brett? Forensuche? Hilfe doof?

Danke für Antworten.
Gruß, Andesdaf
Win11 x64 | PB 6.20
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Wo hast du denn her dass man das Standard-Popmenu von Windows mittels PB ersetzen kann? Das funktioniert nicht, geht nur mit Subclassing.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

ich dachte einfach, dass man ein Popupmenü im StringGadget machen
kann. Leider enthält die Hilfe auch keinen Hinweis auf diesen Sachverhalt.

Danke für die Hilfe.
Win11 x64 | PB 6.20
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@Andesdaf

Code: Alles auswählen

EnableExplicit

Global gOldEditProc

Procedure editproc(hWnd, uMsg, wParam, lParam)
  Protected result
    Select uMsg
        Case #WM_RBUTTONDOWN
          DisplayPopupMenu(1,WindowID(0))
          result = 0
      Default
        result = CallWindowProc_(gOldEditProc, hWnd, uMsg, wParam, lParam)
    EndSelect
ProcedureReturn result
EndProcedure

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  StringGadget(1,10,10,200,20,"Klicke rechte Maustaste...",0)
 
  If CreatePopupImageMenu(1,#PB_Menu_ModernLook)
    MenuItem(1,"Hallo Andesdaf :)",0)
  EndIf
 
  gOldEditProc = SetWindowLongPtr_(GadgetID(1), #GWL_WNDPROC, @editproc())
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Zuletzt geändert von RSBasic am 02.07.2009 22:02, insgesamt 3-mal geändert.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Ich sehe du benutzt SetWindowLongPtr_(). Ist allerdings überflüssig wenn du die Typendeklarationen nicht einfernst (.l) :wink:
Windows 10 Pro, 64-Bit / Outtakes | Derek
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Danke RSBasic :allright:, ich schätze mal den Snippet hast du aus deiner
API-Library.
Win11 x64 | PB 6.20
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

@Andesdaf
Diesmal nicht, wird aber demnächst auch hinzugefügt.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

RSBasic hat geschrieben:@Andesdaf
Diesmal nicht, wird aber demnächst auch hinzugefügt.
Ach so, ich hab es zwar versäumt deine Library zu durchsuchen aber es hätte
auch nichts gebracht. :wink:
Win11 x64 | PB 6.20
Antworten