Eigene Container Klasse
-
Hallo, allesamt,
ich hab ein kleines Spiel in MFC/C++ geschrieben, dass für die Eingabe u.a. DirectInput benutzt und im Fenstermodus läuft. Natürlich werden die Tasten ja auch dann abgerufen, wenn das Fenster keinen Fokus hat, also wenn ich z.B. in einen Texteditor gehe, während das Spiel läuft. Ich kann also aus dem Texteditor heraus das Spiel steuern.
Ich habe deswegen (bisher erfolglos) nach einem Event oder eine Funktion gesucht, mit der ich Tastatureingaben ignorieren kann, falls das Spielfenster keinen Focus hat. Weiß jemand grad, wie die entsprechende Funktion / Event heißt oder wie ich das anderweitig implementieren kann?
Schönen Sonntag abend,
IceBaer
-
Welchen Mode hast Du gewählt?
http://msdn.microsoft.com/en-us/library/bb219804(VS.85).aspx
-
Seh ich auch so, liegt ziemlich sicher am Modus, dh. der Methode SetCooperativeLevel sind falsche Flags gesetzt.
Versuch es mal mit DISCL_NONEXCLUSIVE und lass DISCL_FOREGROUND weg.Falls das nicht funktioniert, würde ich es so machen, dass du beim Fenster selber, in dem Event "OnKillFocus()", einfach Direct Input deaktivierst, dh. die Eingabe ist dann abgeschaltet sobald das Fenster den Fokus verliert.
-
Also mit dem Cooperative-Level hats nicht geklappt. Ich hatte vorher den standard drin (nonexclusive, background), das funktioniert. Logisch wäre ja aber DISCL_NONEXCLUSIVE | DISCL_FOREGROUND für Anwendungen in einem Fenster.
Naja, ich habs jetzt mit einer Windowsmessage (WM_SETFOCUS und WM_KILLFOCUS) gelöst. Vielen Dank für die Antworten!

Mehr Info: http://msdn.microsoft.com/en-us/library/ms646283(VS.85).aspx