als Anfänger bitte ich um Beantwortung einiger Fragen:
1) Spiel läuft im Vollbildmodus. Ich moechte ein selbstgeschriebenes Programm im Hintergrund per Tastatur über nicht vom Spiel belegte Tasten steuern. Für so etwas wird im Forum die Funktion GetAsyncKeystate empfohlen.
a) Mein PB kennt diese Funktion nicht. Gibt es die nur in der Vollversion?
b) Bei MSDN heißt es zu dieser Funktion:
Windows NT/2000/XP: The return value is zero for the following cases:
* The current desktop is not the active desktop
* The foreground thread belongs to another process and the desktop does not allow the hook or the journal record.
Das hoert sich nun so an, als würde die Tastaturabfrage dann doch nicht klappen. Oder soll man das so verstehen, daß mein Programm die Tastatureingabe zwar erreichen würde, ich aber keine Bestätigung oder so bekommen kann?
c) Oehm, Vista ist da gar nicht erwähnt, gibt/geht es auch unter Vista?
2) Die Joystickabfrage funktioniert bei mir unter XP, aber nicht bei einem Bekannten unter Vista (Auch nicht im Kompatibilitätsmodus; selbiges bei den weiteren folgenden Fragen). Ist das Problem bekannt, ist es keines oder muß man etwas besonderes beachten?
3) Ebenfalls nicht unter Vista läuft eine Prozedur, mit der man in das Vordergrundvollbildspiel etwas einblenden kann:
Code: Alles auswählen
farbe = RGB(255,255,255)
FontNr = LoadFont(#PB_Any, "Verdana",17)
FontID = FontID(FontNr)
Global Mem.l
Mem = AllocateMemory(1024)
Procedure.l DesktopOutput()
PokeL(Mem, 1)
ProcedureReturn Mem
EndProcedure
while (Joystickknopf drücken oder so)
StartDrawing(DesktopOutput())
DrawingFont(FontID)
DrawingMode( #PB_2DDrawing_Transparent)
DrawText(tx,ty,"(Ausgabemeldung)", farbe)
StopDrawing()
wend
Egal ob ja oder nein:
Ohne das while ..wend wird die Enblendung vom Vordergrundspiel sofort überschrieben. Daher verbraucht der Spaß ordentlich CPU und die Einblendung flackert gleichwohl. Gibt es eine Moeglichkeit (Delay(irgendwas) in der Schlefe geht nicht, da dann wieder überschrieben wird), die Schleife mit der Bildschirmwiederholungsrate zu synchronisieren oder auch eine andere Loesung?
Vielen Dank im voraus.
Code-Tags ergänzt - Kaeru fecit
nächstmal bitte selber dran denken.