Seite 1 von 1

PureBasic 4.20 Beta 3 WinVista 32 Bit StringGadget

Verfasst: 08.04.2008 20:53
von Bamsagla
Hallo mal an alle,

folgendes "Problem" tritt bei mir mit Windows Vista und PureBasic 4.20 Beta 3 auf, es ist zwar nur ein optischer Fehler, aber ich dachte, ich frag mal nach obs anderen auch so geht...

Wenn ich in einem Fenster ein Stringgadget mit dem Flag #PB_String_Numeric erstelle wird dieses auch ohne weitere Probleme in meinem Fenster dargestellt und die Begrenzung auf numerische Eingaben funktioniert auch. Wenn ich jedoch irgendeinen Buchstaben eingebe (was ja nicht erlaubt ist) erscheint ein Hinweis "Unzulässiges Zeichen, Sie können hier nur eine Zahl eingeben". Soweit so gut. Gebe ich jedoch ein paar Mal hintereinander ein unerlaubtes Zeichen ein, erscheint neben der Hinweissprechblase auch ein grausiger grauer Kasten genau in der Mitte meines Fensters, der eigentlich auf ein nicht ausgeführtes Redraw vermuten lässt. Allerdings läuft die Repeat-Schleife mit WindowEvent weiter, somit müssten eigentlich auch Redraws durchgeführt werden...

Genauere Angaben: Das StringGadget befindet sich in einem ContainerGadget und hat nur den Flag #PB_String_Numeric und einen voreingestellten Zahlenwert 0000000.

Vielleicht kann jemand den Fehler bestätigen oder eine kleine Hilfestellung geben?

Ach ja, unter PB 4.10 Final läuft der Code ebenfalls, der graue Kasten blitzt jedoch hier nur ganz kurz (bedeutend weniger als eine Sekunde) auf, wird jedoch sofort wieder durch das Fenster und die anderen Gadgets ersetzt.

Ansonsten wirklich erstklassige Arbeit vom PB-Team. Danke für eure konstant zuverlässige und gute Entwicklung.

Re: PureBasic 4.20 Beta 3 WinVista 32 Bit StringGadget

Verfasst: 08.04.2008 20:55
von Kiffi
Code?

Verfasst: 08.04.2008 20:55
von RSBasic
Bild

Genauere Angaben zum Problem

Verfasst: 08.04.2008 21:14
von Bamsagla
Hallo auch,

sorry, hätt ja gleich was liefern können.
Hab jetzt mit einem kleinen Programmchen nochmal herumgetestet und hätte es fast nicht geschafft, den Fehler nachzustellen.
Letztendlich ist es mir dann doch gelungen.
Folgendes Programm:

Code: Alles auswählen

If OpenWindow(100,0,0,800,600,"Testfenster",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_Invisible)
  If CreateGadgetList(WindowID(100))
    ContainerGadget(50,10,10,780,580)
      StringGadget(100,100,100,200,20,"TestString")
      StringGadget(200,100,200,200,20,"0000000",#PB_String_Numeric)
    CloseGadgetList()
  EndIf
  HideWindow(100,0)
  Repeat
    Select WindowEvent()
      Case #PB_Event_CloseWindow
        Ende = 1
      Case 0
        Delay(1)
    EndSelect
  Until Ende = 1
EndIf
Wichtig: Der Fehler tritt nur auf, wenn sich die beiden Stringgadgets in einem Container befinden und in den Compiler-Optionen die XP-Skin-Unterstützung eingeschaltet ist.
Sofern die XP-Skin-Unterstützung abgeschaltet ist, erscheint nämlich gar keine Sprechblase mit dem entsprechenden Hinweis, es erklingt nur der Standardsound und die Eingabe wird nicht angenommen.

Das führt mich jetzt zu dem Thema, ob man bei Programmen für Windows Vista generell die XP-Skin-Unterstützung abschalten sollte?
Allerdings was mach ich dann bei einem Programm, das für Windows XP und Windows Vista gedacht ist? Zwei execs?

Naja, das Problem ist ja jetzt wirklich auch nicht weltbewegend.
So long, Bamsagla.

Re: Genauere Angaben zum Problem

Verfasst: 08.04.2008 21:50
von Kiffi
Bamsagla hat geschrieben:sorry, hätt ja gleich was liefern können.
kein Thema! Also mit Deinem Code kann ich Dein Problem nicht
nachvollziehen ("grausiger grauer Kasten").

Dafür bei mir verliert beim 2ten Tastendruck das StringGadget 200 seinen
3D-Rahmen und das StringGadget 100 verschwindet ganz.

Ich weiß nicht, was schlimmer ist: der grausige graue Kasten oder das
verschwindende Gadget. Auf jeden Fall scheint mir das ein fieser Redraw-Bug
in PB zu sein. In PB 4.1 tritt das bei mir übrigens nicht auf.

Grüße ... Kiffi

Screenshot zum Fehler

Verfasst: 08.04.2008 22:00
von Bamsagla
Hallo Kiffi,

in diesem Beispiel ist es vielleicht auch nicht so toll ersichtlich, hab mal einen Screenshot von meinem Projekt beigefügt.

Bild

Hoff das zeigt jetzt, was ich mein.

Ciao, Bamsagla.

Re: Screenshot zum Fehler

Verfasst: 08.04.2008 22:21
von Kiffi
@Bamsagla: ich habe das mal mit meinen spärlichen Englischkenntnissen im
anderen Board gepostet: http://www.purebasic.fr/english/viewtop ... 641#239641
(ich hoffe, es ist einigermaßen verständlich, was ich da zusammengehackt habe)

Grüße ... Kiffi

Re: Screenshot zum Fehler

Verfasst: 09.04.2008 00:04
von Kiffi
*push*

@Bamsagla: netmaestro hat einen Workaround gepostet. Kannste mal die
SetWindowLong_()-Zeile in Deinen Code einfügen und dann berichten, ob die
graue Box nun nicht mehr erscheint?

Code: Alles auswählen

ContainerGadget(50, [...]
SetWindowLong_(GadgetID(50),#GWL_STYLE,GetWindowLong_(GadgetID(50),#GWL_STYLE) &~ #WS_CLIPCHILDREN)
[...]
Grüße ... Kiffi

Weitere Probleme unter XP

Verfasst: 09.04.2008 08:31
von Bamsagla
Guten Morgen Kiffi,

danke dir erst einmal für deine engagierte Hilfe.
Habe heute mal mein Projekt auf meinem XP-Arbeitsrechner ausprobiert.
Hier ist es noch viel schlimmer! Die kompletten Inhalte meines Containergadgets werden durch diesen Bug eliminiert und durch eine graue Fläche ersetzt. Ein Redraw wird nicht durchgeführt!
Ebenso konnte ich unter Windows Vista wie auch unter Windows XP das Problem feststellen, dass auch Frame3DGadgets in ContainerGadgets beim Programmstart und nach dem Minimieren nicht mit ihrer (bei mir weissen) Flächenfarbe dargestellt werden, sondern in ebenfalls dem gleichen grau.
Den Workaround hab ich mal gleich in mein Projekt eingefügt und auf alle ContainerGadgets angewandt; siehe da: weder die Probleme beim Frame3DGadget noch bei den "Reißern" durch den erwähnten #PB_String_Numeric-Bug.

Vielen dank auf jeden Fall für deine Hilfe, Kiffi. Allerdings hoffe ich trotzdem, dass eine Fehlerkorrektur (dann wohl für die ContainerGadgets?) den Weg in die PB 4.20 Final schafft, da die Probleme keineswegs in PB 4.10 aufgetreten sind.

EDIT: Hab gerade im englischen Forum gelesen, dass Fr34k im letzten Post auf deinen Topic dazu Stellung genommen hat und den Bug nachvollziehen konnte und eine Korrektur bereits vorgesehen ist.
Thanks to all! :allright: