/*------------------------------------------------------------------------------*/ void AkindDI::Message( UINT msg, WPARAM wParam, LPARAM lParam ) { switch ( msg ){ case WM_ACTIVATE: if ( m_BackGround == FALSE ){ if ( WA_INACTIVE == wParam ){ Unacquire(); } else { Acquire(); } } break; case WM_DEVICECHANGE: switch ( wParam ){ case DBT_DEVICEARRIVAL : JoyAdd(); break; case DBT_DEVICEREMOVECOMPLETE : JoyDel(); break; } break; } }
/*------------------------------------------------------------------------------*/ void AkindDI::Message( UINT msg, WPARAM wParam, LPARAM lParam ) { switch ( msg ){ case WM_ACTIVATE: if ( m_BackGround == FALSE ){ if ( WA_INACTIVE == wParam ){ Unacquire(); } else { Acquire(); } } break; case WM_DEVICECHANGE: if (wParam == DBT_DEVICEARRIVAL && IsInputDevice((DEV_BROADCAST_HDR*)lParam)) { JoyAdd(); } else if (wParam == DBT_DEVICEREMOVECOMPLETE && IsInputDevice((DEV_BROADCAST_HDR*)lParam)) { JoyDel(); } break; } }
/*------------------------------------------------------------------------------*/ BOOL AkindDI::Init( HWND hWnd, BOOL BackGround ) { HRESULT hRes; HINSTANCE hInstance = GetModuleHandle( NULL ); m_hWnd = hWnd; m_JoyNum = 0; m_BackGround = BackGround; ZeroMemory( m_KeyBuff, sizeof(m_KeyBuff) ); ZeroMemory( m_JoyGUID, sizeof(m_JoyGUID) ); ZeroMemory( m_JoyData, sizeof(m_JoyData) ); for ( int i=0; i<JOY_MAX; i++ ){ m_JoyReady[i] = FALSE; } hRes = DirectInput8Create( hInstance, DIRECTINPUT_VERSION, IID_IDirectInput8, (LPVOID*)&m_pDInput, NULL ); if ( FAILED( hRes ) ){ Error( 0, hRes ); return( FALSE ); } hRes = m_pDInput->CreateDevice( GUID_SysKeyboard, &m_pDInputKey, NULL ); if ( FAILED( hRes ) ){ Error( 1, hRes ); return( FALSE ); } hRes = m_pDInputKey->SetDataFormat( &c_dfDIKeyboard ); if ( FAILED( hRes ) ){ Error( 2, hRes ); return( FALSE ); } if ( m_BackGround ){ hRes = m_pDInputKey->SetCooperativeLevel( hWnd, DISCL_BACKGROUND|DISCL_NONEXCLUSIVE ); } else { hRes = m_pDInputKey->SetCooperativeLevel( hWnd, DISCL_FOREGROUND|DISCL_NONEXCLUSIVE ); } if ( FAILED( hRes ) ){ Error( 3, hRes ); return( FALSE ); } JoyAdd(); DEV_BROADCAST_DEVICEINTERFACE filter; filter.dbcc_size = sizeof(filter); filter.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE; filter.dbcc_classguid = GUID_CLASS_INPUT; m_hJoyDeviceNotify = RegisterDeviceNotification( hWnd, &filter, DEVICE_NOTIFY_WINDOW_HANDLE ); return( TRUE ); }