Autor Beitrag
doug
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 26.07.05 09:17 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Di 26.07.05 13:47 
Hallo und :welcome: im DF!
Bitte versuche es demnächst mal mit Forensuche: Suche in: Delphi-Forum, Delphi-Library "JOYSTICK"
Vielleicht hilft dir auch der Eintrag in unseren FAQ: Suche in: Delphi-Library "JOYSTICK"

Gruß,
maxk

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
doug Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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++):
ausblenden 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:
ausblenden 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:

ausblenden 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 user profile iconraziel: Code- und Delphi-Tags hinzugefügt.
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: 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

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.