Почему 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)