DirectInput: Ich bekomm die Kriese....



  • ja aber wie macht man das?!?! Könntet ihr mir bitte bitte etwas Psoido-code geben?

    Ich bin mit meinem Latein total am ende 😞



  • Bin mir net sicher, aber probiers mal so:

    this->m_oldKeyBuffer = m_KeyBuffer; // oder wie kopiert man das komplett? :confused: 
    if (!(this->m_KeyBuffer[DIK_CODE] & 0x80) && (this->m_oldKeyBuffer[DIK_CODE] & 0x80)) {
     return true;
    }
    else return false;
    

    Ist nicht ausprobiert, aber irgendwie so in der Art 😉



  • will net 😞



  • Hast du zum Kopieren des Array mal memcpy probiert?
    Ansonsten zum Ausprobieren einfach 2 x GetDeviceState aufrufen
    Wie genau sieht denn das "will net" aus?



  • "will net" sieht so aus: es passiert gar nix

    memcopy hab ich grad auch ausprobiert, und will auch net



  • Uops, das mit this->m_oldKeyBuffer = m_KeyBuffer; bzw. memcpy muss natürlich hinter dem if-Block stehten, also probier mal das hier:

    if (!(this->m_KeyBuffer[DIK_CODE] & 0x80) && (this->m_oldKeyBuffer[DIK_CODE] & 0x80)) {
     ret_val = true;
    }
    else ret_val = false;
    this->m_oldKeyBuffer = m_KeyBuffer; // oder memcpy, bin grad net sicher
    return ret_val;
    

    🙄

    [ Dieser Beitrag wurde am 23.02.2003 um 16:49 Uhr von flenders editiert. ]



  • was ist ret_val? 😕



  • Hi,

    ich habs jetzt mal so nach deinem Beispiel gemacht:

    bool CInput::IsKeyUp (int DIK_CODE)
    {
        CLog            *p_Protokoll;
    
        p_Protokoll     = CLog::getInstance ();
    
        if(FAILED(this->m_Keyboard->GetDeviceState(sizeof(this->m_KeyBuffer), (LPVOID)&this->m_KeyBuffer)))
        {
            p_Protokoll->writeText ("DirectInput      : ERROR      : Konnte die Tastatur nicht abfragen.\n");
            return (false);
        }
    
        if (!(this->m_KeyBuffer[DIK_CODE] & 0x80) && (this->m_oldKeyBuffer[DIK_CODE] & 0x80)) 
        {
            return (true);
        }
        else 
        {
            return (false);
        }
    
    //  this->m_oldKeyBuffer = m_KeyBuffer; // oder memcpy, bin grad net sicher
        memcpy (this->m_oldKeyBuffer, this->m_KeyBuffer, 256);
    
        return (false);
    }
    

    funzt net 😞 *schnief* :(:(



  • Hab meinen Code von vorhin nochmals korigiert! ret_val ist eine Variable vom Typ bool. Ich habe sie eingeführt, um das Problem vom deinem Code zu lösen: Durch deine return s wird memcpy nie aufgerufen 😉 D.h. du musst den Aufruf von memcpy vor return im if-else Block aufrufen, oder eben eine Hilfsvariable einführen 🙂



  • [ Dieser Beitrag wurde am 23.02.2003 um 17:12 Uhr von Ikari editiert. ]


Anmelden zum Antworten