[Windows] F10 stoppt Spiel

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Krishty
Establishment
Beiträge: 8239
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

[Windows] F10 stoppt Spiel

Beitrag von Krishty »

Wenn ich in meinem Spiel F10 drücke, hält das Programm an und die Maus, die ich vorher abgeschaltet hatte, wird wieder auf dem Bildschirm sichtbar.

Ich fange die F10-Taste nicht ab und verarbeite da nichts. Das Programm besteht vor allem aus einem Standard-Fenster, auf dem GetMessage() läuft.

Da dürfte also Windows oder Direct3D seine Finger im Spiel haben. Was ist da los?

Gruß

Nachtrag: Yay!
WM_SYSKEYDOWN message

Posted to the window with the keyboard focus when the user presses the F10 key (which activates the menu bar) or holds down the ALT key and then presses another key.
Es wird also die Menu Bar aktiviert, wenn man in einem Fenster F10 drückt. Mein Fenster hat aber kein Menü (NULL)! Wtf?!
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
David Glauss
Beiträge: 1
Registriert: 08.04.2015, 08:15
Echter Name: David Glauss

Re: [Windows] F10 stoppt Spiel

Beitrag von David Glauss »

Hy,

das Problem kenne ich. Ich scheibe in meiner Nachrichtenschleife folgenden Code um das Problem zu lösen.

Code: Alles auswählen

case WM_SYSCOMMAND:
{
	auto const systemCommand = (firstMessageParameter & 0xFFF0); // firstMessageParameter wäre der WPARAM Parameter der WNDPROC.

	// Tastenverknüpfungen auf die nicht vorhandene Fenstermenüleiste deaktivieren.
	if (systemCommand == SC_KEYMENU)
	{
		return 0; // <-- Nun sollte F10 keine Macken mehr machen.
	}

	// Den Energiesparmodus unterbinden wenn das Fenster aktiv ist.
	if ((systemCommand == SC_MONITORPOWER) && mWindowState.activated)
	{
		return 0;
	}

	// Den Bildschirmschoner unterbinden wenn das Fenster aktiv ist.
	if ((systemCommand == SC_SCREENSAVE) && mWindowState.activated)
	{
		return 0;
	}

	break;
}
Ich hoffe ich konnte weiterhelfen.
Spiele Programmierer
Establishment
Beiträge: 426
Registriert: 23.01.2013, 15:55

Re: [Windows] F10 stoppt Spiel

Beitrag von Spiele Programmierer »

Muss man soetwas wirklich immer unterbinden?
Man kommt doch schwer versehentlich auf F10 und mich nervt tierisch, wenn manche Programme zum Beispiel die Windowstaste oder Alt+F4 deaktivieren.
Benutzeravatar
Krishty
Establishment
Beiträge: 8239
Registriert: 26.02.2009, 11:18
Benutzertext: state is the enemy
Kontaktdaten:

Re: [Windows] F10 stoppt Spiel

Beitrag von Krishty »

@David: Funktioniert tadellos; danke! Für den Energiesparmodus/Bildschirmschoner nutze ich übrigens

Code: Alles auswählen

void enableStandbyForSystemAndScreen() {
	SetThreadExecutionState(0);
}

void disableStandbyForSystemAndScreen() {
	SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);
}
Das kann man direkt an der Stelle einbauen wo es von Bedeutung ist, und man spart eine Handvoll ifs in der Nachrichtenverarbeitung.

@Spiele Programmierer: Es ist halt total verwirrend wenn man draufkommt, denn alles hält an und der Mauszeuger wird wieder sichtbar und … nichts passiert, bis man wieder aufs Fenster klickt. Wenn Windows das nur machen würde, wenn einem Fenster auch tatsächlich ein Menü zugewiesen ist, würde es 100 % drinbleiben. Ist aber nicht. Wenn ich das in einem anderen Spiel sähe, würde ich es ebenfalls für einen Fehler halten. Da zumindest die Tasten für Kamerasteuerung in der Nähe liegen (F6, F7, F12), schalte ich es ab und erspare mir, dass das einmal pro Jahr im Bugtracker anstrandet.
seziert Ace Combat, Driver, und S.T.A.L.K.E.R.   —   rendert Sterne
Benutzeravatar
Andi
Beiträge: 81
Registriert: 12.03.2009, 00:19

Re: [Windows] F10 stoppt Spiel

Beitrag von Andi »

@Spiele Programmierer
Ist mir kürzlich passiert das ich unbewusste die F10 gedrückt habe und alles stand still, das war dann erst mal ein "Schock" und ein WTF Moment. Jetzt weiss ich das es an F10 lag und wie ich das behebe, danke :P
Benutzeravatar
TGGC
Establishment
Beiträge: 569
Registriert: 15.05.2009, 18:14
Benutzertext: Ich _bin_ es.
Alter Benutzername: TGGC
Echter Name: Ich _bin_ es.
Wohnort: Mainz
Kontaktdaten:

Re: [Windows] F10 stoppt Spiel

Beitrag von TGGC »

Normalerweise macht man bei F10 einfach sein eigenes Menu auf, wenn man das Windows Menu nicht haben will.
Antworten