sticky und Vista

Anfängerfragen zum Programmieren mit PureBasic.
Syntacks_Error
Beiträge: 107
Registriert: 08.03.2009 16:08

sticky und Vista

Beitrag 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?
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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?
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Syntacks_Error
Beiträge: 107
Registriert: 08.03.2009 16:08

Beitrag 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$) 

;
; 
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag 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 ?)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Syntacks_Error
Beiträge: 107
Registriert: 08.03.2009 16:08

Beitrag 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).
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag 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...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Syntacks_Error
Beiträge: 107
Registriert: 08.03.2009 16:08

Beitrag von Syntacks_Error »

OpenGL, an DX10 sollte es also eigentlich nicht liegen.

Bei mir funktionert es unter XP prima, ist ja seltsam.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Tur0k
Beiträge: 187
Registriert: 16.02.2009 21:41
Computerausstattung: 4.00 GB RAM, 2x 2.20Ghz, 340GB+500GB

Beitrag von Tur0k »

Windows XP hat kein DirectX 10... ^^ *oder?*

DX9 und DX10 ist halt nicht das gleiche. :)
buuh* :D
Antworten