未收到Windows多点触摸TOUCHEVENTF_UP
Windows multi touch TOUCHEVENTF_UP not received
我正在开发一款支持多点触控的Windows应用程序。我遵循了在这里找到的指南
http://msdn.microsoft.com/en-us/library/windows/desktop/dd744775(v=vs.85).aspx
但我有个问题。在某个时刻,有一个手指卡住了,这意味着我可以看到这个手指有一个TOUCHEVENT_DOWN,一个TOOCHEVENT_MOVE,但没有TOUCHEVENTF_UP,尽管屏幕上已经没有手指了。。。
我有:
static int fingers = 0;
static LRESULT OnTouch(HWND hWnd, WPARAM wParam, LPARAM lParam );
static LRESULT CALLBACK winProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam);
SetWindowLongPtr(handle, GWL_WNDPROC, (long)winProc);
LRESULT CALLBACK winProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam){
switch(Msg){
case WM_TOUCH:
OnTouch(handle, wParam, lParam);
break;
...
}
LRESULT OnTouch(HWND hWnd, WPARAM wParam, LPARAM lParam )
{
BOOL bHandled = FALSE;
UINT cInputs = LOWORD(wParam);
PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
if (pInputs){
if (GetTouchInputInfo((HTOUCHINPUT)lParam, cInputs, pInputs, sizeof(TOUCHINPUT))){
for (UINT i=0; i < cInputs; i++){
TOUCHINPUT ti = pInputs[i];
if( ti.dwFlags&TOUCHEVENTF_DOWN ) {
fingers+=1;
}
else {
if( ti.dwFlags&TOUCHEVENTF_MOVE) {
}
if( ti.dwFlags&TOUCHEVENTF_UP) {
fingers-=1;
}
}
bHandled = TRUE;
}else{
/* handle the error here */
}
delete [] pInputs;
}else{
/* handle the error here, probably out of memory */
}
if (bHandled){
// if you handled the message, close the touch input handle and return
CloseTouchInputHandle((HTOUCHINPUT)lParam);
return 0;
}else{
// if you didn't handle the message, let DefWindowProc handle it
printf("ERRORn");
return DefWindowProc(hWnd, WM_TOUCH, wParam, lParam);
}
}
触摸屏幕后,我在屏幕上没有实际的手指,而是有可变的手指!=0….
我很感激你的帮助。谢谢
附言:我申请了提议的修改,但我还是被卡住了,没有收到任何回复。
TOUCHEVENTF_MOVE
和TOUCHEVENTF_UP
可以组合在一个输入中,但您正在测试它们,就好像它们是互斥值一样。因此,如果一个"移动"和一个"上升"同时出现,你就会错过"上升"。
TOUCHINPUT
结构的文档指定哪些标志在组合中是有意义的。
相关文章:
- 如何让C++'tally up'结果并制定计划?
- QGraphicsItems not showing up QGraphicsScene
- OpenGL通常"Up"方向?
- 使用外部依赖项运行 VC++ 单元测试时"Failed to set up execution context"
- 带有"up-"和"center-vec3"参数的glm::rotate()的有效替代方案?
- Cin messing up SetConsoleTitle
- 当您通过Qt小部件打开文件时,是否可以'pop-up'文件?
- "Cleaning up"嵌套的 if 语句
- ISO C++禁止在我的代码中使用可变长度数组 'up' [-Wvla]
- Speeding up makefile for SDL2
- setting up sfml
- QTableView does not show up
- CDT 在以下期间发生内部错误: "Setting up indexer"
- Setting up GLEW with QGLWidget
- c++ setting up for sqlite3
- Glib::Regex picking up TextTag-s
- Splitting up classes c++
- Qt 5.4 中的"No debugger set up"
- QSystemTrayIcon does not show up
- Arduino locks up