Шаг 15 - Реализуем GetDeviceState.

Мы будем использовать описанную функцию для получения информации от мыши. Запрашивать информацию мы будем по таймеру, и выводить ее на форму.

Visual Basic
Visual C++

Visual Basic

Помещаем на форму элемент таймер и инициализируем начальные установки.

Private Sub Form_Load()
	.....
	dmmouse.Acquire
	Timer1.Interval = 1000
	Timer1.Enabled = True
End Sub

Описываем структуру с данными

Dim stateMouse As DIMOUSESTATE
Dim dmmouse As DirectInputDevice
.......

Пишем реакцию на событие таймера.

Private Sub Timer1_Timer()
	dmmouse.GetDeviceStateMouse stateMouse
	Form1.Label1.Caption = Str(stateMouse.x)
End Sub

При запуске Вы увидите, что в окне отражается смещение мышки от текущей позиции.

15_1.gif (2984 b)

Visual C++

Создаем событие таймера, запускаем таймер при запуске диалогового окна.

BOOL CDImputDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	......

	// TODO: Add extra initialization here
     	SetTimer(ID_TIMER_1,1000,NULL);  
	return TRUE;  // return TRUE  unless you set the focus to a control
}

Пишем функцию реакции на таймер

void CDImputDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	HRESULT hr;
	DIMOUSESTATE dims;
	hr = g_pMouse->GetDeviceState( sizeof(DIMOUSESTATE), &dims );
	m_Edit=dims.lX;
        UpdateData(FALSE);
	CDialog::OnTimer(nIDEvent);
}

Запускаем и наблюдаем смешения мышки от текущей позиции.

15_2.gif (2249 b)

Hosted by uCoz