Как определить, есть ли палец на тачпаде

Хочу задать вопрос по тачпаду. Я пытаюсь создать программу, и мне нужно определить, когда палец находится на сенсорной панели. Я не хочу обнаруживать TAP. Хотелось бы узнать, касался ли тачпад.

Я пытаюсь найти решение для этого 2 недели. Я нашел способ обнаружить TAP, но мне это не нужно. Я читаю из Windows Touch Messages и все, что могу найти в Интернете. здесь< /а>. Но не повезло.

Я очень благодарен, если кто-то может помочь мне сделать эту работу.

Спасибо за уделенное время,

Извините, если мой английский плохой.


person tkoul90    schedule 03.12.2020    source источник
comment
Я просмотрел документы: вызовите GetTouchInputInfo на WM_MESSAGE, результатом которого будет сохранить, есть ли касание вниз или вверх в pInputs, как описано здесь. dwFlags содержит информацию onUp и onDown.   -  person Marko Vejnovic    schedule 03.12.2020
comment
Покажите код, который вы пробовали.   -  person Ben Voigt    schedule 04.12.2020


Ответы (1)


Ok,

Мой ответ с Марко, так как теперь у меня есть этот код.

#include <iostream>
#include <windows.h>
#include <winuser.h>

using namespace std;

LRESULT CALLBACK TestWndProc(HWND in_hWnd, UINT in_uMsg, WPARAM in_wParam, LPARAM in_lParam);


LRESULT CALLBACK TestWndProc(HWND in_hWnd, UINT in_uMsg, WPARAM in_wParam, LPARAM in_lParam)
{
    switch (in_uMsg)
    {
    case WM_TOUCH:
        cout << "WM_TOUCH";
        UINT cInputs = LOWORD(in_wParam);
        PTOUCHINPUT pInputs = new TOUCHINPUT[cInputs];
        if (NULL != pInputs)
        {
            if (GetTouchInputInfo((HTOUCHINPUT)in_lParam,
                cInputs,
                pInputs,
                sizeof(TOUCHINPUT)))
            {
                for (int i = 0; i < static_cast<INT>(cInputs); i++) {
                    TOUCHINPUT ti = pInputs[i];
                }
                
                // process pInputs
                if (!CloseTouchInputHandle((HTOUCHINPUT)in_lParam))
                {
                    // error handling
                }
            }
            else
            {
                // GetLastError() and error handling
            }
            delete[] pInputs;
        }
        else
        {
            // error handling, presumably out of memory
        }

        

    }

    // default processing
    return DefWindowProc(in_hWnd, in_uMsg, in_wParam, in_lParam);
}

void main()
{
    MSG msg;
    BOOL bRet;
    while ((bRet = GetMessage(&msg, NULL, 0, 0)) != 0)
    {
        if (bRet == -1)
        {
            // handle the error and possibly exit
        }
        else
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
}

Но я боюсь, что я все испортил в своем уме. Я хотел бы напечатать на консоли сообщение с надписью «Палец на сенсорной панели», когда палец находится на сенсорной панели.

Теперь я пытаюсь найти, как получить сообщение TOUCH_UP и TOUCH_DOWN.

person tkoul90    schedule 04.12.2020
comment
Удалось ли вам заставить это работать? - person Himanshu P; 25.05.2021