Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Beitrag 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
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
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: Stringgadget #ES_RIGHT nachträglich nur ab Vista ?

Beitrag 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 ...)
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
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

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

Beitrag 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 
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

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

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Rudi
Beiträge: 143
Registriert: 22.04.2010 18:28
Wohnort: #PB_Any

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

Beitrag 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
Win7 (x64)PB 5.4x (x86)5,7 Windows-LeistungsindexSuche
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

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

Beitrag 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.
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

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

Beitrag 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
Antworten