+ -
当前位置:首页 → 问答吧 → Windows7触摸屏,VC获取手按下时鼠标位置的问题

Windows7触摸屏,VC获取手按下时鼠标位置的问题

时间:2011-12-14

来源:互联网

在windows7触摸屏上,用手按下时,收到的WM_TOUCH消息中的坐标总是鼠标之前的位置。也就是说开始鼠标在位置A,现在用手指点击位置B,但此时收到的消息中的坐标还是位置A的。

当手离开时,才同时收到WM_LBUTTONDOWN和WM_LBUTTONUP消息,此时鼠标位置才正确的位置B的坐标。不知道有没有人用VC6在windows上开发过触摸屏的程序,win7的确不大适合触摸屏开发。

请问如何在手按下时就获得当前的正确坐标,请教高手!

作者: coosney   发布时间: 2011-12-14

GetCursorPos()可以获取。。。

作者: shen_wei   发布时间: 2011-12-14

PreTranslateMessage用这个获取消息再GetCursorPos,转化为对应的位置咯

作者: afairycell   发布时间: 2011-12-14

GetCursorPos()试过的,也是之前鼠标的坐标,也就是说用手按下后,实际鼠标根本就没过来,当手up时,鼠标位置才过来。
就是不知道如何在手按下时就获得此时的坐标。

不过还是谢谢你们的回答。

作者: coosney   发布时间: 2011-12-15

你使用了RegisterTouchWindow API吗?

这是MS的例子:
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
  HWND hWnd;

  hInst = hInstance; // Store instance handle in the global variable.

  hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

  RegisterTouchWindow(hWnd, 0);

  if (!hWnd)
  {
  return FALSE;
  }

  ShowWindow(hWnd, nCmdShow);
  UpdateWindow(hWnd);

  return TRUE;
}

LRESULT OnTouch(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
UINT cInputs = LOWORD(wParam);
PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
if (NULL != pInputs)
{
  if (GetTouchInputInfo((HTOUCHINPUT)lParam,
  cInputs,
  pInputs,
  sizeof(TOUCHINPUT)))
  {
  // process pInputs
  if (!CloseTouchInputHandle((HTOUCHINPUT)lParam))
  {
  // error handling
  }
  }
  else
  {
  // GetLastError() and error handling
  }
  delete [] pInputs;
}
else
{
  // error handling, presumably out of memory
}
return DefWindowProc(hWnd, message, wParam, lParam);
}

作者: baby393   发布时间: 2011-12-15

或许你没有正确理解TOUCHINPUT结构。

作者: baby393   发布时间: 2011-12-15

热门下载

更多