D
Hi!
Ich bin grade dabei OIS mit u. a. OIS::Mouse::grab () zu erweitern. Die Linux-Version funktioniert einwandfrei. Unter wine funktioniert die Windows-Version auch problemlos. Aber unter (dem "echten") Windows XP sendet die Maus ihre Events weiterhin an das Fenster, auch wenn ich den Exclusive-Mode bereits ausgeschaltet habe - d. h. andere Fenster erhalten keine Events. Wenn ich das Programm starte, funktioniert alles noch, das Problem taucht erst auf, nach dem ich den Exclusive-Mode ein- und wieder ausschalte.
Hier der Code:
void Win32Mouse::grab (bool grab)
{
if (mGrabMouse == grab)
return;
mMouse->Unacquire ();
if (grab)
{
coopSetting &= ~DISCL_NONEXCLUSIVE;
coopSetting |= DISCL_EXCLUSIVE;
}
else
{
coopSetting &= ~DISCL_EXCLUSIVE;
coopSetting |= DISCL_NONEXCLUSIVE;
}
if( FAILED(mMouse->SetCooperativeLevel(mHwnd, coopSetting)) )
OIS_EXCEPT( E_General, "Win32Mouse::Win32Mouse >> Failed to set coop level" );
HRESULT hr = mMouse->Acquire();
if (FAILED(hr) && hr != DIERR_OTHERAPPHASPRIO)
OIS_EXCEPT( E_General, "Win32Mouse::Win32Mouse >> Failed to aquire mouse!" );
ShowCursor (mHideMouse);
mGrabMouse = grab;
}
Das ganze dürfte DirectInput 8 sein.