2011-09-26 3 views
5

Tôi đang làm việc với màn hình cảm ứng và sử dụng trình điều khiển Windows 7 được tích hợp sẵn (vì nó không bao giờ nhắc tôi cài đặt bất kỳ). nó hoạt động tốt, ngoại trừ một vấn đề nhỏ. Khi tôi chạm vào màn hình, nó sẽ không gửi WM_LBUTTONDOWN cho đến khi tôi di chuyển ngón tay ra khỏi màn hình. Nó xuất hiện để làm điều này để xác định xem tôi có ý định giữ để thi đua WM_RBUTTONDOWN hay không. (Ngoài ra, tôi đã cố vô hiệu hóa cử chỉ mô phỏng giữ, nhưng nó không bao giờ vô hiệu hóa trong thực tế.)WM_TOUCH không được gửi ngay lập tức với sự kiện chạm xuống

Vì vậy, tôi nghĩ rằng tôi sẽ chỉ nhận được tin nhắn WM_TOUCH. Và tôi thấy rằng WM_TOUCH (0x240) cũng không được gửi đến cửa sổ của tôi cho đến khi tôi di chuyển ngón tay ra khỏi màn hình. Tôi nghĩ rằng đánh bại mục đích của WM_TOUCH hoàn toàn.

Cả trước và sau khi đăng ký để nhận tin nhắn WM_TOUCH, tôi nhận được ba thông điệp ngay khi chạm vào màn hình:

1. Send: 0x02CC (undocumented tablet messages) 
2. Post: 0x011B (undocumented) 
3. Send: 0x011A (WM_GESTURENOTIFY) 

0x011A là WM_GESTURENOTIFY, mà mã của tôi là để đáp ứng (có lẽ tôi không đáp ứng một cách chính xác?). Tôi trả lời với một phản hồi tiêu chuẩn (sử dụng mã mẫu từ MS) để nhận được thông báo đầy đủ.

Một điều nữa, tôi bắt đầu nhận được WM_TOUCH khi tôi đăng ký tin nhắn cảm ứng, nhưng tôi cũng tiếp tục nhận được tin nhắn WM_GESTURENOTIFY. Theo tài liệu MS, khi tôi đăng ký nhận WM_TOUCH, tôi không nhận được tin nhắn cử chỉ nữa.

Nếu bất cứ ai có thể cho tôi biết cách nhận tin nhắn WM_TOUCH ngay lập tức (ví dụ: khi tôi nhận được tin nhắn WM_GESTURENOTIFY), và không sau khi tôi để ngón tay của mình không chạm vào màn hình cảm ứng, tôi sẽ đánh giá cao điều đó.

Trả lời

0

Kiểm tra hướng dẫn này trên các sự kiện liên lạc:

http://msdn.microsoft.com/en-us/gg464991

gì bạn muốn sử dụng là RegisterTouchWindow chức năng, như vậy:

RegisterTouchWindow(handle, 0); 

Windows sẽ hiện gửi WM_TOUCH thông điệp thay vì WM_GESTURE thư đến cửa sổ của bạn. Hãy nhớ rằng bạn sẽ phải biên dịch dựa trên Windows SDK phiên bản 7.0 trở lên để tính năng này hoạt động.

+0

Đây là những gì tôi làm bây giờ. Trong thực tế, tôi sử dụng WM_GESTURE cho XP và WM_TOUCH cho Win7. Điều này cho biết thêm một nếp nhăn, nhưng kết quả là rất tốt. – user574771

1

Tôi gần như có cùng một vấn đề và giải quyết nó bằng cách sử dụng:

RegisterTouchWindow (hWnd, TWF_WANTPALM);