Почему WM_TOUCH не получен, когда я делаю что-то продолжительное в событии касания?

Я подклассифицирую окно и обрабатываю сообщения WM_TOUCH.

Когда я получаю сообщение WM_TOUCH, я вызываю

      Dim RetVal&
RetVal = GetTouchInputInfo(hTouchInput, TouchPoints, tiTouchInput(1&), LenB(tiTouchInput(1&)))

(Я урезал свой длинный код, чтобы показать только важную часть):

      Dim bDown As Boolean
Dim bUp As Boolean
bDown = tiTouchInput(i).dwFlags And TOUCHEVENTF_DOWN
bUp = tiTouchInput(i).dwFlags And TOUCHEVENTF_UP

Когда я получаю TOUCHEVENTF_DOWN, я делаю что-то длинное, что занимает около 1 секунды.

Как следствие, я пропускаю следующее сообщение WM_TOUCH, содержащее событие TOUCHEVENTF_UP.

Я удивляюсь, как это может произойти.

Я думал, что сообщения «сложены», и если я сделаю что-то между ними, это займет немного больше времени, но я все равно получу сообщение.

Но в моем случае кажется, что следующее сообщение съедено.

Если я НЕ выполняю эту длительную операцию, я получаю следующее сообщение WM_TOUCH.

Это нормально, или я что-то делаю, чтобы убить это сообщение?

Я также случайным образом крашу VB6 после нескольких событий касания. Но это происходит только в том случае, если я выполняю эту длительную операцию после события down.

Спасибо за любые идеи/помощь!

PS: Да, я закрываю hTouchInput в конце:

      Dim lRet&
lRet = CloseTouchInputHandle(hTouchInput)

0 ответов

Другие вопросы по тегам