GetDeviceState( sizeof(DIMOUSESTATE2), &dims2 ); if( FAILED(hr) ) { hr = g_pMouse->Acquire(); while( hr == DIERR_INPUTLOST ) hr = g_pMouse->Acquire();
if( hr == DIERR_OTHERAPPHASPRIO || hr == DIERR_NOTACQUIRED ) SetDlgItemText(IDC_STATIC1, "失败!" );
} GetCursorPos(&point); //得到鼠标位置.这个功能直接用API得到更方便,所以这里取
// 代了DirectX strNewText.Format("L=%d R=%d M=%d X=%4d Y=%4d", //写入结果,分别为L左
//键,R右键,M中键,X鼠标X
//值,Y鼠标Y值.前三个值,1
//表示按下,0为弹起 (dims2.rgbButtons[0] & 0x80) ? 1 : 0, (dims2.rgbButtons[1] & 0x80) ? 1 : 0, (dims2.rgbButtons[2] & 0x80) ? 1 : 0, point.x,point.y );
CString strOldText; GetDlgItemText(IDC_STATIC1, strOldText); if( 0 != lstrcmp( strOldText, strNewText ) ) SetDlgItemText( IDC_STATIC1, strNewText ); //显示结果,IDC_STATIC1为用来
//显示的文本标签 }
VOID CMouseRDlg::FreeDirectInput() //释放 { if( g_pMouse ) g_pMouse->Unacquire();
SAFE_RELEASE( g_pMouse ); SAFE_RELEASE( g_pDI ); }
void CMouseRDlg::OnTimer(UINT nIDEvent) {
ReadImmediateData( ); CDialog::OnTimer(nIDEvent); }
void CMouseRDlg::OnDestroy() {
FreeDirectInput(); KillTimer(1); CDialog::OnDestroy(); }
OK了,运行一下程序就可以了,这时你会发再点击屏幕任意一个地方都会有响应了.
下载工程代码:
http://www.7forever.com/rwdata/temp/MouseR.rar
作者信箱:
zhucde@163.com 上一页 [1] [2] |