Интерпретировать как фиксированную строку / литерал, а не как регулярное выражение, используя sed

Ссылка, которую вы опубликовали, показывает единственный надежный способ распознавания сообщений мыши, генерируемых физической мышью, и тех, которые были синтезированы в ответ на прикосновение и ввод пера.

Для полноты здесь код. Код зависит от состояния, которое действует только при обработке сообщения мыши. Вызов его в любое другое время имеет неопределенное поведение:

bool IsTouchEvent() {
    const LONG_PTR c_SIGNATURE_MASK = 0xFFFFFF00;
    const LONG_PTR c_MOUSEEVENTF_FROMTOUCH = 0xFF515700;

    LONG_PTR extraInfo = GetMessageExtraInfo();
    return ( ( extraInfo & c_SIGNATURE_MASK ) == c_MOUSEEVENTF_FROMTOUCH );
}

Дополнительные WM_MOUSEMOVE сообщения, которые вы наблюдаете, являются артефактом того, как система реализует свою внутреннюю бухгалтерскую отчетность. Например, если окно отображается или скрыто, курсор мыши может находиться за другим окном и должен быть пересчитан. Для этого система синтезирует искусственное сообщение WM_MOUSEMOVE.

Этот эффект объясняется в блоге Raymond Chen: Почему я получаю ложные сообщения WM_MOUSEMOVE? .

30
задан jww 22 June 2018 в 19:25
поделиться