2013-07-21 43 views
10

sự khác biệt giữa nhận được một phím bấm với là gì:GetKeyState() so với GetAsyncKeyState() so với getch()?

  • GetKeyState()
  • GetAsyncKeyState()
  • getch()?

Khi nào tôi nên sử dụng cái kia?

+2

Tại sao bạn nên downvote? Tôi không thể tìm thấy bất kỳ kết quả nào về điều này từ stackoverflow, thậm chí nếu tôi bỏ qua 'getch()' và tìm kiếm 'GetKeyState() so với GetAsyncKeyState()'. –

Trả lời

13

GetKeyState() và GetAsyncKeyState() là các API cụ thể của Windows, trong khi getch() hoạt động trên các trình biên dịch C không phải Windows cụ thể khác.

GetKeyState() nhận trạng thái khóa được trả về từ hàng đợi tin nhắn của chuỗi. Trạng thái không phản ánh trạng thái ngắt liên kết với phần cứng.

GetAsyncKeyState() chỉ định liệu phím đã được nhấn kể từ lần gọi cuối cùng đến GetAsyncKeyState() và liệu khóa hiện có lên hay xuống. Nếu bit quan trọng nhất được đặt, phím sẽ bị tắt và nếu bit ít quan trọng nhất được đặt, phím sẽ được bấm sau cuộc gọi trước đó đến GetAsyncKeyState().

Những gì tôi thấy trong thực tế là nếu bạn giữ phím và gán một hành vi khi nhấn phím, nếu bạn sử dụng GetKeyState(), hành vi sẽ được gọi nhiều lần hơn nếu bạn đã sử dụng GetAsyncKeyState().

Trong trò chơi, tôi thích sử dụng GetAsyncKeyState().

(Bạn cũng có thể kiểm tra để biết thêm chi tiết trên blog MSDN).

Các vấn đề liên quan