Шаг 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)


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 4.06.2002