Реестр Windows EnableCursorSurpression не работает для сенсорного ввода - PullRequest
1 голос
/ 15 июня 2019

РЕДАКТИРОВАТЬ - Обновлено с улучшенным случаем воспроизведения.

Я хочу остановить исчезновение моего курсора во время сенсорного ввода. Я установил значение реестра;

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System \ EnableCursorSurpression

* От 1010 * до 0, но курсор все еще находится в нажатом положении во время сенсорного ввода.

Я уже задавал более общий вопрос о программе на C ++, которую я пытаюсь написать, чтобы использовать весь ввод данных с сенсорного экрана. Я думал, что это значение реестра решит проблему, поэтому я хотел задать более конкретный вопрос. Однако мое оригинальное сообщение здесь;

Windows SendInput заставляет курсор мыши мерцать и исчезать

Вызов GetCursorInfo подтверждает, что это происходит, потому что курсор подавлен, но установка значения реестра в 0 не имеет значения. Он даже не останавливает исчезновение курсора во время обычного сенсорного ввода, когда моя программа не работает.

Это можно воспроизвести, просто изменив значение реестра и увидев, остается ли курсор видимым после сенсорного ввода. Чтобы увидеть мерцание, которое я описал, просто используйте Visual Studio для создания нового приложения Windows для рабочего стола и добавьте этот код в функцию WndProc;

 case WM_POINTERUPDATE:
    {
        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));
        break;
    }

Запустите программу, коснитесь экрана внутри окна и наблюдайте, как курсор перемещается вправо, мерцая при этом. Мерцание не так плохо, когда курсор находится над окном программы, но хуже, когда оно выходит из него, особенно если оно затем проходит через другое окно с пользовательским курсором, например, окно mspaint.

Добавление этого кода;

    CURSORINFO cursorInfo;
    cursorInfo.cbSize = sizeof(CURSORINFO);
    GetCursorInfo(&cursorInfo);

Позволил мне проверить состояние и увидеть, что курсор подавлен, независимо от этого значения реестра.

...