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

1

09.03.2012, 12:05

Mehrere Joysticks anschließen

Hallo zusammen,

in dem Buch 3D-Spiele-Programmierung gibt es das Beispiel mit dem auslesen der "Joystick-Daten". Bei einem Joystick klappts wunderbar. Schließe ich einen zusätzlichen Joystick an, werden nur die Daten des zuerst angeschloassenen Joysticks angezeigt.

Wie bekommt man es hin, dass auch die Werte des zweiten Joysticks angezeigt werden? ?(

Vielen Dank.

Grüße

datatom

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

09.03.2012, 13:42

Im Buch wird doch beschrieben, wie man alle Eingabegeräte auflistet.
Wenn du das tust, bekommst du auch Zugriff auf den zweiten/dritten/... Joystick.

3

11.03.2012, 18:18

Ich bin leider manchmal schwer von Begriff :dash:

Du meinst wahrscheinlich das letzte Beispiel aus Kapitel 4. Aber ich kann leider keinen Bezug zu dem Joystickbeispiel erstellen. Im Joystickbeispiel wird mit [cpp]SetDlgItemInt(hDlg, IDC_X, JoystickState.lX, TRUE);[cpp] der Wert der X-Achse ausgelesen.

Ich habe aber noch nicht verstanden, wie ich den ersten und den zweiten Joystick ermittle und das zu jedem Joystick die z.B. Achsewerte bekomme.

Es wäre nett, wenn du mir ein bisschen auf die Sprünge helfen würdest :whistling:

4

12.03.2012, 20:23

Ich habe mich noch einmal umgesehen. Im Joystick-Beispiel werden in der Methode "EnumJoysticksCallback" die Joysticks abgezählt. Allerdings wird mit DIENUM_STOP der Zählvorgang nach dem ersten mal beendet. Ich habe aus DIENUM_STOP ein DIENUM_CONTINUE gemacht. Die Methode wird jetzt zweimal durchlaufen. Allerdings geht das Anzeigefenster auf aber es werden keine Werte angezeigt:-(

Hat jemand einen Tip?

5

12.03.2012, 20:40

Debuggen.

MfG
Check

6

12.03.2012, 21:08

Das Programm verhält sich jetzt anders.

Wird die Methode einmal durchlaufen werden im Anzeigefenster die Werte des Gamepads angezeigt

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
BOOL CALLBACK EnumJoysticksCallback(LPCDIDEVICEINSTANCE pDeviceInstance,
                                    void* pRef)
{
    // GUID des Joysticks kopieren
    JoystickGUID = pDeviceInstance->guidInstance;

    // Abzählung abbrechen
    return DIENUM_STOP;
    //return DIENUM_CONTINUE;
    

    
}



Wird die Methode zweimal durchlaufen werden nicht die Werte des Gamepads angezeigt sondern die Werte des Joysticks.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
BOOL CALLBACK EnumJoysticksCallback(LPCDIDEVICEINSTANCE pDeviceInstance,
                                    void* pRef)
{
    // GUID des Joysticks kopieren
    JoystickGUID = pDeviceInstance->guidInstance;

    // Abzählung abbrechen
    //return DIENUM_STOP;
    return DIENUM_CONTINUE;
    

    
}


Ist ja schon mal gut. Aber wie bekomme ich Zugriff auf die Werte des Gamepads? Die Adresse des Gamepads wird beim zweiten Durchlauf durch die Adresse des Joysticks überschrieben.

Was muss ich ändern?

PS: Ich will das Programm nicht dahingehend ändern, dass die Werte vom Gamepad und vom Joystick im Anzeigefenster angezeigt werden, es reicht mir wenn ich die Werte vom Gamepad und vom Joystick im Debugger angezeigt bekomme. Das Ausgabefenster ist für mich nur zweitrangig.

7

01.05.2012, 19:00

Also ich habe jetzt echt alles gegeben, bin aber nicht weiter gekommen 8| . Hat jemand vielleicht doch einen Tipp, wie ich zwei Joysticks auslesen kann?

Vielen Dank.

Grüße

datatom

Werbeanzeige