Seite 1 von 1

Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Verfasst: 17.03.2011 19:03
von hjbremer
Ich schreibe gerade eine Inputbox und da ist mir folgendes aufgefallen.

Bei dem einen Rechner ein Laptop mit XP funktioniert folgender Code nicht, bei meinem Laptop zu Hause mit Vista hingegen schon.

Ist das bei euch auch so ? Das der Code unter XP nicht funktioniert

Code: Alles auswählen

  If OpenWindow(0, 0, 0, 322, 205, "StringGadget Flags", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    StringGadget(0, 8,  10, 306, 20, "Normal StringGadget...")
    
    SetWindowLongPtr_(GadgetID(0), #GWL_STYLE, GetWindowLongPtr_(GadgetID(0), #GWL_STYLE) | #ES_RIGHT)
    
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf

Re: Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Verfasst: 17.03.2011 19:22
von ts-soft
hjbremer hat geschrieben: Ist das bei euch auch so ? Das der Code unter XP nicht funktioniert
Ja, aber wenn der Style vorher gesetzt wird, geht es auch mit XP.
Vielleicht ein Neuzeichnen unter XP erzwingen? (SetWindowsPos ...)

Re: Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Verfasst: 17.03.2011 19:42
von Rudi
Und warum machst Du Dir das Leben so schwer?

Code: Alles auswählen

If OpenWindow(0, 0, 0, 322, 205, "StringGadget Flags", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  StringGadget(0, 8,  10, 306, 20, "Normal StringGadget...", #ES_RIGHT)
  
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf 

Re: Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Verfasst: 17.03.2011 19:51
von RSBasic
@Rudi
Siehe Titel des Threads: Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

@hjbremer
Hm kA, ich hab alles ausprobiert, mit Werten (GetWindowLongPtr()) herumgespielt, aber bin leider nicht zum Ergebnis gekommen.

Re: Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Verfasst: 17.03.2011 19:56
von Rudi
Alles klar! Das Thema hatten wir auch schon mal in der API-Library. Da hilft dann wohl nur FreeGadget() und neues Gadget mit #ES_RIGHT.

Code: Alles auswählen

If OpenWindow(0, 0, 0, 322, 205, "StringGadget Flags", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  StringGadget(0, 8, 10, 306, 20, "Normal StringGadget...")
  ButtonGadget(1, 8, 30, 150, 25, "rechts")
EndIf

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          FreeGadget(0)
          StringGadget(0, 8, 10, 306, 20, "Normal StringGadget...", #ES_RIGHT)
      EndSelect
  EndSelect  
Until WaitWindowEvent() = #PB_Event_CloseWindow
:edit: hier noch die URL http://www.purebasic.fr/german/viewtopi ... 27#p272327

Re: Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Verfasst: 17.03.2011 21:11
von hjbremer
Rudi hat geschrieben:Alles klar! Das Thema hatten wir auch schon mal in der API-Library. Da hilft dann wohl nur FreeGadget() und neues Gadget mit #ES_RIGHT
Das ändert aber die Z-Order, die müßte dann korrigiert werden. Das könnte man zwar mit SetWindowPos in einem Aufwasch erledigen, aber der Aufwand steigt, für dieses Gimnick. (gemeint ist SetFocus = Inhalt springt nach links, KillFocus = springt nach rechts) im Callback.

Ansonsten bin ich beruhigt, das es nicht an meinen Laptops liegt, sondern wohl an XP.

Re: Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Verfasst: 21.03.2011 10:39
von Shardik
Im englischen Forum wurde bereits in diesem Thread festgestellt, daß im StringGadget
ein nachträgliches #ES_RIGHT erst ab Windows Vista möglich ist:
http://www.purebasic.fr/english/viewtopic.php?t=36853