|
|
发表于 2008-4-7 12:05:00
|
显示全部楼层
Re:为什么监听器不能捕获鼠标事件呢?
看代码:
void Win32Keyboard::_readBuffered()
{
DIDEVICEOBJECTDATA diBuff[KEYBOARD_DX_BUFFERSIZE];
DWORD entries = KEYBOARD_DX_BUFFERSIZE;
mKeyboard->GetDeviceData( sizeof(DIDEVICEOBJECTDATA), diBuff, &entries, 0 );
//Update keyboard and modifier states.. And, if listener, fire events
for(unsignedinti = 0; i < entries; ++i )
{
KeyCode kc = (KeyCode)diBuff[ i ].dwOfs;
if( diBuff[ i ].dwData & 0x80 )
{
if( listener )
istener->keyPressed( KeyEvent( this,kc,_translateText(kc) ) );
}
else
{
//Fire off event
if( listener )
listener->keyReleased( KeyEvent( this, kc, 0 ) );
}
}
}
void Win32Keyboard::_read()
{
mKeyboard->GetDeviceState( sizeof(KeyBuffer), &KeyBuffer );
}
貌似只有在缓冲模式下才能使用事件监听。
尝试把mMouse->setBuffered(false);改mMouse->setBuffered(true);
|
|