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. ]