Entwickler-Ecke
Multimedia / Grafik - directinput -joystick
doug - Di 26.07.05 09:17
Titel: directinput -joystick
hi,
ich wuerde gerne mit delphi die directinput schnittstelle ansprechen, leider habe ich einige probleme was die joystick abfrage angeht.
Wie kann ich den joysick richtig einrichten und die knoepfe abfragen. Ich bekomme schon beim enumerieren der joysticks probleme, weil ich nicht weiss wie ich die entsprechenden codes schreiben muss.
Ich habe versucht mir anhand von den msdn sachen etwas zurecht zu striken, leider sind die sachen alle mit c++ gemacht und damit tue ich micht doch noch recht schwer.
Ich benutze uebrigens die neusten dx headers(von clootie) sprich, dx9(dxinput8).
Google spuckt da leider nicht sehr viel aus, was im zusammenhang mit delphi steht. Fuer ein paar code snipets/links o.ae. was mir unter die arme greifen koennte bin ich sehr dankbar.
doug
maxk - Di 26.07.05 13:47
Hallo und :welcome: im DF!
Bitte versuche es demnächst mal mit Forensuche:
"JOYSTICK"
Vielleicht hilft dir auch der Eintrag in unseren FAQ:
"JOYSTICK"
Gruß,
maxk
doug - Di 26.07.05 15:33
hi,
die suche hat mir leider nicht viel gebracht.
Im genaueren geht es um folgenden code ausschnit, welcher mich einen/mehrere joysticks aufzaehlen laesst:
(msdn/c++):
Quelltext
1: 2: 3:
| //g_pDI is an initialized pointer to IDirectInput8 g_pDI->EnumDevices(DI8DEVCLASS_GAMECTRL, EnumJoysticksCallback, NULL, DIEDFL_ATTACHEDONLY) |
bzw. meine portierung nach delphi:
Delphi-Quelltext
1: 2:
| g_lpDI.EnumDevices(DI8DEVCLASS_GAMECTRL, EnumJoysticksCallback, nil, DIEDFL_ATTACHEDONLY) |
Ich habe jetzt das problem, das ich nicht weiss wie ich in delphi die funktion "EnumJoysticksCallback" uebergeben, bzw. deklarieren soll! Hier das orginal:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| BOOL CALLBACK EnumJoysticksCallback(const DIDEVICEINSTANCE* pdidInstance, VOID* pContext) { HRESULT hr;
// Obtain an interface to the enumerated joystick. hr = g_pDI->CreateDevice(pdidInstance->guidInstance, &g_pJoystick, NULL); if(FAILED(hr)) return DIENUM_CONTINUE;
return DIENUM_STOP; } |
dank euch. :)
Moderiert von
raziel: Code- und Delphi-Tags hinzugefügt.
maxk - Di 26.07.05 19:44
Wenn es einfach nur darum geht den Zeiger auf eine Prozedur zu übergeben, schreib einfach in den Aufruf der API Funktion ein @ vor den Namen der Prozedure. Die Prozedur sieht so aus, wie die in C++ (?). Jedoch musst du wahrscheinlich noch ein stdcall; hinterschreiben, damit die Parameter in den richtigen Reihenfolge ankommen - sonst gibt's nette Fehlermeldungen ;)
Gruß,
maxk
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!