Mam mały problem z funkcją directinput. Niby wszystko działa, zczytuje klawisze i wszystko [green] ale jest to metoda buforową. Chce pobrać 5 zdarzeń na raz... no i pobiera, ale jak klawisz jest cały czas wciśnięty to pobiera tylko zdarzenie że wcisnąłem klawisz... pytanie co zrobić abym mógł zareagować jak klawisz jest wciśnięty... Pisze grę platformową i wiecie chyba o co chodzi.

Kod do odpalenia Direciinput

DirectInput8Create(hinst, DIRECTINPUT_VERSION, IID_IDirectInput8, (LPVOID*)&g_lpDI, NULL);

g_lpDI->CreateDevice(GUID_SysKeyboard, &g_lpDIDevice, NULL);
g_lpDIDevice->SetDataFormat(&c_dfDIKeyboard);
g_lpDIDevice->SetCooperativeLevel(hOkno,DISCL_NOWINKEY | DISCL_FOREGROUND | DISCL_NONEXCLUSIVE);
g_lpDIDevice->SetProperty(DIPROP_BUFFERSIZE, &dipdw.diph);

Kod do pobierania klawiszy

    DIDEVICEOBJECTDATA* didod;  // Receives buffered data 
    DIDEVICEOBJECTDATA lpdidod;  // Receives buffered data 
    DWORD              dwElements=4;
    DWORD              i;

    do
      {    
      g_lpDIDevice->Acquire();
      hr = g_lpDIDevice->GetDeviceData( sizeof(DIDEVICEOBJECTDATA), didod, &dwElements, 0 );
      }
    while(dwElements == 4);
    
    if (FAILED(hr)) return false;
 
    for(i=0; i<dwElements; ++i)
       {
       lpdidod=didod[i];       
       if (lpdidod.dwData & 0x80)
       switch(lpdidod.dwOfs)
        {
        case DIK_RIGHT:
// itd...