/// <summary> /// Inicializa el mouse /// </summary> /// <param name="pDI"></param> /// <param name="hWnd"></param> /// <param name="screenRes"></param> /// <param name="exclusiveMode"></param> /// <returns>Si el dispositivo fue inicializado</returns> bool CMouse::Init(LPDIRECTINPUT8 pDI, HWND hWnd, const Vect2i& screenRes, bool exclusiveMode) { bool bIsOk = Inherited::Init(pDI, hWnd); m_ScreenResolution = screenRes; if (bIsOk) { // Clear out structs for mouse buttons memset(m_bIsDown, 0, sizeof(bool)*3); memset(m_bIsUpDown, 0, sizeof(bool)*3); memset(m_bIsDownUp, 0, sizeof(bool)*3); m_Pos.x = m_Pos.y = 0; LOGGER->AddNewLog(ELL_INFORMATION, "Mouse:: crancking up mouse"); bIsOk = !FAILED(CrankUp(GUID_SysMouse, &c_dfDIMouse, exclusiveMode)); if (bIsOk) { // Activate event notification for the mouse m_hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); bIsOk = m_hEvent != NULL; if (bIsOk) { bIsOk = !FAILED( m_pDevice->SetEventNotification(m_hEvent)); if (bIsOk) { // create buffered input for the mouse DIPROPDWORD dipdw; dipdw.diph.dwSize = sizeof(DIPROPDWORD); dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); dipdw.diph.dwObj = 0; dipdw.diph.dwHow = DIPH_DEVICE; dipdw.dwData = BUFFER_SIZE; bIsOk = !FAILED( m_pDevice->SetProperty(DIPROP_BUFFERSIZE, &dipdw.diph)); if (bIsOk) { // acquire the device to make it work m_pDevice->Acquire(); LOGGER->AddNewLog(ELL_INFORMATION, "Mouse:: mouse online"); } } } } } if (!bIsOk) { Done(); } return bIsOk; }
HRESULT ACMouse::Init() { // limpa as estruturas do mouse memset(mbPressed, 0, sizeof(bool)*3); memset(mbReleased, 0, sizeof(bool)*3); mlX = mlY = 0; mrcCage.left = -1; mrcCage.right = -1; mrcCage.top = -1; mrcCage.bottom = -1; //setup do mouse if (FAILED(CrankUp(GUID_SysMouse, &c_dfDIMouse))) return AC_FAIL; // ativa eventos de notificacao if (!(mhEvent = CreateEvent(NULL, FALSE, FALSE, NULL))) { MessageBoxA(NULL, "Erro ao inicializar o mouse.", "ACMouse Error", MB_OK); return AC_FAIL; } if (FAILED( mpDevice->SetEventNotification(mhEvent))) { MessageBoxA(NULL, "Erro ao inicializar evento de notificacao.", "ACMouse Error", MB_OK); return AC_FAIL; } // create buffered input for the mouse DIPROPDWORD dipdw; dipdw.diph.dwSize = sizeof(DIPROPDWORD); dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); dipdw.diph.dwObj = 0; dipdw.diph.dwHow = DIPH_DEVICE; dipdw.dwData = BUFFER_SIZE; if (FAILED( mpDevice->SetProperty(DIPROP_BUFFERSIZE, &dipdw.diph))) { MessageBoxA(NULL, "Erro SetProperty(Mouse) falhou.", "ACMouse Error", MB_OK); return AC_FAIL; } // acquire the device to make it work mpDevice->Acquire(); return AC_OK; };