/// <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;
} 
Exemple #2
0
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;
};