Seite 1 von 2
sticky und Vista
Verfasst: 27.03.2009 13:27
von Syntacks_Error
Die sticky-Funktion (Fenster immer im Vordergrund) scheint unter Vista nicht zu funktionieren. Ist das wirklich so und wenn ja, gibt es Abhilfe?
Verfasst: 27.03.2009 13:36
von AND51
Also bei mir funktioniert StickyWindows() einwandfrei.
Kannst du bitte deine PB-Version und eventuell deine Prozessorarchitektur (32-Bit oder 64-Bit Vista) angeben?
Möglicherweise wird bei dir StickyWindow() ja nie ausgeführt - etwa, wenn du den Befehl innerhalb diverser Schleifen oder If-Abfragen gesteckt hast, um es als bequeme Option für den Benutzer anzubieten. In diesem Falle poste doch bitte ein Stückchen Code.
Nüchtern überlegt: Sollte StickyWindow() unter Vista genrell nicht funktionieren hätte es schon Bug-Reporte gehagelt. Da ich diese aber nirgends sehe, bedeutet das im Umkehrschluss, dass der Fehler bei deinem Code oder deiner Windowsversion liegen muss. Richtig?
Verfasst: 27.03.2009 13:50
von Syntacks_Error
Danke für die Antwort. Das Problem ist: Isch abe ga kein Vista .. Es geht um ein Programm, das errechnete Positionsdaten über ein Spiel im Vollbildmodus in ein kleines Fensterchen einblendet. Läuft bei mir unter XP einwandfrei, aber nicht bei einem Freund, der Vista hat:
Code: Alles auswählen
fenster = OpenWindow(#PB_Any, 1000,800, 160, 22,"", #PB_Window_BorderLess)
HideWindow(fenster,1) ; Unsichtbar machen
StickyWindow(fenster,1) ; Fenster immer Vordergrund
LoadFont(0, "Verdana", 13) ; Ausgabe groß
SetGadgetFont(#PB_Any, FontID(0))
;
;Position errechnen => position$
;
;Wenn Taste gedrückt (über Keylogger, der geht auch unter Vista, zeige Position):
HideWindow(fenster,0) ; 0 = sichbar machen
TextGadget(19, 1, 1, 200, 20, Position$)
;
;
Verfasst: 27.03.2009 14:04
von AND51
Dieser Ansatz dürfte recht unsicher sein.
Ich glaube zu wissen, was du meinst.
Mir passierte das mit AntiVir-Updater, der sich mitten in einem Vollbildspiel in den Vordergrund drängelte. Der Updater läuft ja auch im Sticky-Modus.
Eigene Versuche, damals unter XP, ein Sticky-Window noch vor ein Villbild zu bringen, scheiterten bei mir aber. Ich denke daher, dass sowas erst gar nicht vorgesehen ist und bei dir nur durch Zufall funktioniert.
Ist das Vollbildprogramm denn in PB geschrieben? In diesem Fall öffnest du dein Vollbildspiel nicht in einem
OpenScreen(), sondern in einem
OpenWindowedScreen(), in einem maximierten
OpenWindow() mit dem
#PB_Window_Borderless-Flag und machst es auch Sticky.
In diesem Fall wären dann der simulierte Vollbidmoudus und dein kleines Extrafenster beide Fenster, die mit dem Sticky-Attribut wie gewünscht übereinander angezeigt werden können.
Der richtige Ansatz dürfte jedoch sein, sich in den Vollbildmodus "einzumischen" und darauf herumzumalen. Entsprechende Versuche
gibt es bereits.
Verfasst: 27.03.2009 15:55
von Bisonte
Welches Spiel ? Vielleicht ist da schon der Hund begraben, dass es unter Vista nicht geht. (Evt. für XP die 32 und Vista die 64 Bit Version ?)
Verfasst: 27.03.2009 15:55
von Syntacks_Error
Das wäre ja dumm.
Mit der Grafikeinbblendung hatte ich es auch schon probiert:
http://www.purebasic.fr/german/viewtopi ... t=syntacks
Geht unter Vista aber auch nicht (auch nicht mit Integer).
Verfasst: 27.03.2009 16:00
von Bisonte
Ist es ein OpenGL oder ein DirectX Spiel ?
Vielleicht ist unter DX9 alles ok und DX10 mag sowas nicht...
Obwohl... eigentlich hab ich unter XP noch kein Fenster "über" einen Fullscreen bekommen...
Verfasst: 27.03.2009 16:16
von Syntacks_Error
OpenGL, an DX10 sollte es also eigentlich nicht liegen.
Bei mir funktionert es unter XP prima, ist ja seltsam.
Verfasst: 27.03.2009 17:11
von Kaeru Gaman
meiner Meinung nach ist das ein absolut bedeutungsloser Zufall, dass es bei dir auf XP funktioniert.
das bedeutet nicht, dass es bei nem dutzend anderen Leuten mit XP auch nur ansatzweise klappt.
ein Fenster über einem Vollbild darzustellen ist prinzipiell nicht vorgesehen.
Verfasst: 27.03.2009 17:12
von Tur0k
Windows XP hat kein DirectX 10... ^^ *oder?*
DX9 und DX10 ist halt nicht das gleiche.
