Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dx11

unregistriert

1

23.06.2011, 22:41

Tastaur DirectX11

Kleine Frage:
Ich möchte gerne Tasten mit DirectX11 und C++ auf der tastatur abfragen das geht auch allerdings wie mache ich das wenn ich :

C-/C++-Quelltext

1
2
3
4
 case M:
{
.....
}

mache gehts nicht Compiler sagt nichdeklariter bezeichner aber :

C-/C++-Quelltext

1
2
3
4
case VK_F1:
{
...
}

geht
Danke im Voraus

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

2

23.06.2011, 22:48

Mal mit VK_M versucht? o.O
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

3

23.06.2011, 22:48

Kann so auch nicht gehen, weil der Compiler nämlich nach einer Variablen mit den Name M sucht, wenn sollte es:

C-/C++-Quelltext

1
2
3
case: 'M'
{
}


heißen.

Mfg Male

dx11

unregistriert

4

23.06.2011, 22:51

Oh cool danke geht! Irgendwie so einfach das es schon blöd ist naja ich lern halt noch.
Aber ich muss schon sagen in 5 min bekommt ma hier ne antwort hammer!!
Danke

5

23.06.2011, 22:54

Wenn du noch am lernen bist, also noch am C++ lernen bist, solltes du erstmal die Finger von DirectX 11 lassen, und dich erstmal auf die Konsole konzentrieren. Dann ein paar Programme für schreiben und Erfahrungen mit C++ sammeln.

dx11

unregistriert

6

23.06.2011, 23:04

C++ lernen an sich allein hab ich schon hab auch mit der konsole angefangen.Ich lern jetzt immoment allerdings winapi und DirectX ich habe sonst immer nur einfache Forms zusammengeklickt mit C++/CLI.Nur ich hab mir noch nie gedanken gemacht di Tastatur abzufragen *grins*

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

7

23.06.2011, 23:48

Wie genau führst Du die Keyboard abfragen durch? Mit der WinApi, oder was anderem?

dx11

unregistriert

8

04.07.2011, 20:55

Ich verwende Win API
Allerdings habe hc gemerkt das WinApi relativ schlecht ist zum GUI Proggen

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

9

04.07.2011, 21:50

Es kommt eben immer drauf an, was man vorhat. Für GUI Anwendungen gibt es besseres, zum Beispiel C# mit WinForms oder WPF, oder für C++ Qt oder wxWidgets. :)

Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

10

05.07.2011, 15:58

Also wenn du das mit DirectX machen willst ...

Hallo,

also wenn du innerhalb eines Spiels auf Eingaben des Benutzers reagieren willst, dann würde ich dir zu DirectInput raten.
http://msdn.microsoft.com/en-us/library/…3(v=VS.85).aspx


Das ganze müsste dann ungefähr so aussehen. (Achtung nicht getestet.)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
LPDIRECTINPUT8 directInputObject;
HR(DirectInput8Create( hInstance, DIRECTINPUT_VERSION,IID_IDirectInput8, ( void** )&directInputObject, 0 ));LPDIRECTINPUTDEVICE8 keyboardDevice;
HR(directInputObject->CreateDevice( GUID_SysKeyboard,&keyboardDevice, 0 ));
while(true)
{
    HRESULT hr = keyboardDevice->GetDeviceState(sizeof(buffer),(LPVOID)&buffer);

    if( hr ){HR(keyboardDevice->Acquire( )); /*alls wir den Device verlieren sollten.*/}

    if(KEYDOWN( buffer, DIK_RIGHT )){/* handle this*/}
}


Das ganze macht natürlich nur Sinn innerhalb einer Game Loop, weil du immer wieder prüfen musst ob der Benutzer eine Aktion ausgeführt hat.

Für eine normale GUI App würde ich diesen Ansatz nicht weiter verfolgen, denn dafür hat man so was wie Events erfunden.

Schöne Grüße

Fireball

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Fireball« (05.07.2011, 16:04)


Werbeanzeige