2012-03-09 34 views
7

Thông thường phím Alt sẽ mở menu trong Windows.Làm thế nào để tắt hoạt động bình thường của phím Alt?

Tôi cần điều này để tắt, bởi vì tôi cần phím Alt cho ứng dụng của mình. (Nó là giả lập của máy tính cũ, vì vậy tôi cần bắt chước hành vi của nó.) Tôi viết nó trong Windows API thuần túy, vì vậy tôi mong đợi phải có một số thông điệp được gửi đi và cần phải bị vô hiệu hóa, bỏ đi hoặc bỏ qua.

Alt + Tab không có vấn đề gì, cũng như các phím hệ thống và tổ hợp phím khác, tôi chỉ cần bỏ qua Alt khi mở menu.

(ứng dụng của tôi sử dụng DirectInput để đọc các phím, vì vậy nó hoạt động tốt. Tôi chỉ cần vô hiệu hóa chức năng này sẽ mở một menu với phím Alt. Tôi sẽ mở ra menu sử dụng chuột.)

+0

Trình đơn này là gì? Tôi chỉ cần gõ Alt trên một hộp Windows và không có trình đơn xuất hiện. – Kaz

+1

@Kaz: Nó đặt trọng tâm vào thanh menu của cửa sổ lấy nét. –

Trả lời

10

Làm thế nào về việc kiểm tra cho WM_SYSCOMMAND và khi wParam là SC_KEYMENU, trả về 0?

Cập nhật/giải pháp chính xác:

if(wParam==SC_KEYMENU && (lParam>>16)<=0) return 0; 
return DefWindowProc(hwnd, message, wParam, lParam); 

Mô tả: Nếu lParam>>16 là dương tính thì menu được kích hoạt bằng chuột, khi nó là số không hay tiêu cực thì menu được kích hoạt bằng cách Alt hoặc Alt + một cái gì đó.

+0

Điều này đã giúp tôi tìm ra giải pháp phù hợp. Tôi đã thêm giải pháp cho câu trả lời này. –

+0

Giúp tôi. Vấn đề này là khủng khiếp phím ALT và một vài phím khác trên Windows 8 liên tục vít với các ứng dụng Win32. Cũng nhờ vào mô tả nhỏ nó làm cho sự hiểu biết những gì đang xảy ra rõ ràng hơn. Tôi không bao giờ biết lParam hoặc wParam đã được sử dụng từ trước vì nó không bao giờ được sử dụng quá nhiều trong nhu cầu của tôi. –

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