Я работаю в Windows 10 и пытаюсь написать программу на C ++, которая перехватывает весь ввод данных с сенсорного экрана, однако некоторые данные все еще проходят.
Мой код вызывает RegisterPointerInputTarget с PT_TOUCH для перехвата сенсорного ввода. Это в основном работает, но результаты противоречивы. В качестве теста я добавил код, который использует SendInput для медленного перемещения мыши вправо при обнаружении сенсорного ввода. При работающей программе я могу, например, открыть MS Paint и коснуться экрана. Пока я держу палец на курсоре, он медленно перемещается вправо, как и ожидалось. Однако в тот момент, когда я двигаю пальцем, курсор переходит в положение под моим пальцем, как если бы моя программа вообще не работала.
Чтобы привести другой пример, если я попробую то же самое в Visual Studio, снова курсор медленно перемещается вправо, пока я не переместлю палец, и в этот момент курсор следует за движением моих пальцев, но медленно, отставая от него с значительная задержка
Код для настройки моего окна выглядит так:
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
hInst = hInstance; // Store instance handle in our global variable
static const char* class_name = "DUMMY_CLASS";
WNDCLASSEX wx = {};
wx.cbSize = sizeof(WNDCLASSEX);
wx.lpfnWndProc = WndProc; // function which will handle messages
wx.hInstance = hInst;
wx.lpszClassName = class_name;
HWND hWnd = 0;
if (RegisterClassEx(&wx)) {
hWnd = CreateWindowEx(0, class_name, "dummy_name", 0, 0, 0, 0, 0, HWND_MESSAGE, NULL, NULL, NULL);
}
if (!hWnd)
{
return FALSE;
}
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
if (RegisterTouchWindow(hWnd, 0) &&
RegisterPointerInputTarget(hWnd, PT_TOUCH))
{
...
и мой код обработки сообщений выглядит так:
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_TOUCH:
{
INPUT Inputs[1] = { 0 };
Inputs[0].type = INPUT_MOUSE;
Inputs[0].mi.dx = 1;
Inputs[0].mi.dy = 0;
Inputs[0].mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, Inputs, sizeof(INPUT));
В идеале этот тестовый код будет просто перемещать курсор для любого сенсорного ввода. Буду очень признателен за любую помощь в исправлении или просто понимание этого!