BindGadgetEvent() und StringGadget

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

BindGadgetEvent() und StringGadget

Beitrag von Bisonte »

Hallo. Ich habe da ein merkwürdiges Phänomen....

Wenn ich per BindGadgetEvent() einem StringGadget eine EventProzedur zuweise, wird diese zwar ausgeführt,
aber SendMessage_() scheint nicht zu funktionieren.

Wenn ich aber direkt in der Eventloop genau den gleichen Code schreibe funktionierts.
Kann mir das jemand erklären ?

Code: Alles auswählen

Define Event

Procedure Event_String()
  SendMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
EndProcedure

OpenWindow(0, 0, 0, 640, 480, "Test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)

StringGadget(1, 10, 10, 200, 20, "sldkjfhaölsdhfalfds", #PB_String_BorderLess)
BindGadgetEvent(1, @iString_Events(), #PB_EventType_Focus)

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_CloseWindow
      Break
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
;           If EventType() =   #PB_EventType_Focus
;             SendMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
;           EndIf
          
      EndSelect

  EndSelect
  
ForEver
Sollte doch egal sein ob per BindGadgetEvent oder in der Eventloop das abgefragt wird...
So funktionierts jedenfalls bei anderen Gadgets definitiv, nur beim StringGadget irgendwie nicht...
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: BindGadgetEvent() und StringGadget

Beitrag von RSBasic »

Code: Alles auswählen

Define Event

Procedure Event_String()
  PostMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
EndProcedure

OpenWindow(0, 0, 0, 640, 480, "Test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)

StringGadget(1, 10, 10, 200, 20, "sldkjfhaölsdhfalfds", #PB_String_BorderLess)
BindGadgetEvent(1, @Event_String(), #PB_EventType_Focus)

Repeat
  Event = WaitWindowEvent()
  
  Select Event
    Case #PB_Event_CloseWindow
      Break
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          ;           If EventType() =   #PB_EventType_Focus
          ;             SendMessage_(GadgetID(EventGadget()), #EM_SETSEL, Len(GetGadgetText(EventGadget())), 0)
          ;           EndIf
          
      EndSelect
      
  EndSelect
  
ForEver
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Bisonte
Beiträge: 2427
Registriert: 01.04.2007 20:18

Re: BindGadgetEvent() und StringGadget

Beitrag von Bisonte »

Echt jetzt ? Bild

Danke... !
PureBasic 6.04 LTS (Windows x86/x64) | Windows10 Pro x64 | Asus TUF X570 Gaming Plus | R9 5900X | 64GB RAM | GeForce RTX 3080 TI iChill X4 | HAF XF Evo | build by vannicom​​
Antworten