2014-11-02 7 views
0

Я пытаюсь перечислить Joysticks в DirectInput.'EnumDevices': не является членом 'IDirectInput8A'

unsigned int GetCount() 
{ 
    unsigned int counter; 
    LPDIRECTINPUT8 di; 
    HRESULT hr; 

    counter = 0; 
    di = NULL; 

    if (SUCCEEDED(hr = DirectInput8Create(GetModuleHandle(NULL), 
              DIRECTINPUT_VERSION, 
              IID_IDirectInput8, 
              (VOID**)&di, NULL))) 
    { 
     di->EnumDevices(DI8DEVCLASS_GAMECTRL, countCallback, &counter, DIEDFL_ATTACHEDONLY); 
    } 

    return counter; 
} 

FYI - Это файл c с использованием компилятора C.

Я получаю эти любопытные ошибки.

error C2039: 'EnumDevices' : is not a member of 'IDirectInput8A' 
error C2440: 'function' : cannot convert from 'const GUID' to 'const IID *const ' 

Первый из них имеет в виду строку, которая начинается di->EnumDevices...

Второй имеет в виду IID_IDirectInput8 в DirectInput8Create.

Я играл с настройками UNICODE, чтобы узнать, имеет ли это значение. Неа.

Это ощущение, что-то очень простое.

+0

Возможно, вы захотите увидеть [образцы DirectInput] (https://code.msdn.microsoft.com/windowsdesktop/DirectInput-Samples-8ac6f5e3) o n Галерея файлов MSDN. –

ответ

0

Я решил это сам.

Поскольку C и не C++, мы должны объявить все это на вершине:

#define CINTERFACE 
#define INITGUID 
#define DIRECTINPUT_VERSION 0x0800 
#include <dinput.h> 
#pragma comment (lib, "dinput8.lib") 

этом в DirectInput8Create:

&IID_IDirectInput8, 

это в строке Enum:

di->lpVtbl->EnumDevices(di, DI8DEVCLASS_GAMECTRL, deviceCountCallback, &count, DIEDFL_ATTACHEDONLY); 
0

IDirectInput8A - это класс, поэтому, где вы его объявляете? можете ли вы скопировать вставку декларации? если это класс, вы должны добавить EnumDevices в качестве его члена.

+0

Как и сейчас, это кажется более подходящим в качестве комментария, поскольку оно запрашивает разъяснения. – Werner

+0

@Mast - см. Строку 'LPDIRECTINPUT8 di'. Это не класс. Это структура с указателем на функцию – 010110110101

+0

Кроме того, я сказал, что я кодирую в классах C - no. – 010110110101

Смежные вопросы