2010-09-07 21 views
5

Vấn đề đơn giản, thông thường một chương trình sẽ tạo ra một MessageBeep nếu người dùng nhấn Alt + Dù sao và không có phím nóng liên kết với nó. Tôi có thể gọi những hàm API nào để tránh điều này?Vô hiệu hóa MessageBeep trên Syskeypress không hợp lệ

Xử lý WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN và WM_SYSKEYUP tất cả bằng 0; trên WndProc chính của tôi không hoạt động.

Trả lời

6

WM_MENUCHAR phải là những gì bạn đang tìm kiếm. Tìm kiếm MSDN là bạn của bạn (> tin nhắn beep shortcut < hoặc> tin nhắn beep accelerator <).

http://msdn.microsoft.com/en-us/library/ms646349(VS.85).aspx

Edit: có vẻ là chỉ cho các menu hoạt động.
Chỉnh sửa 2: hoạt động như một sự quyến rũ. lưu ý MSDN:

Một ứng dụng xử lý thông điệp này phải trả về một trong các giá trị sau trong thứ tự cao từ giá trị trả lại.

Tôi đã sử dụng MNC_CLOSE << 16.

+0

Hoàn hảo. Cảm ơn rất nhiều; Tôi có lẽ sẽ không bao giờ nhận được rằng nếu không. – kaykun

1

Tôi nghĩ đây là cài đặt hệ thống. Bảng điều khiển + Âm thanh + tab Âm thanh. Không chắc chắn cái nào làm nó, tôi có rất nhiều trong số họ đã tắt. Có thể "Lỗi chương trình".

+0

Đó là giải pháp toàn cầu cho một vấn đề địa phương. Có cách nào để vô hiệu hóa một chương trình phát ra thông báo gây ra lỗi âm thanh của chương trình phát không? –

+0

Có, tôi có thể thấy câu đầu tiên có thể gây nhầm lẫn một chút, nhưng tôi muốn vô hiệu hóa MessageBeep này theo chương trình trong chương trình của riêng tôi. – kaykun

+1

Không, các chương trình * không * phải ghi đè tùy chọn người dùng. Hoặc để đặt nó thẳng thắn hơn, một lập trình viên không bắt buộc phải ép buộc sở thích cá nhân của mình trên người dùng. Điều tương tự cũng xảy ra đối với nội dung như kích thước phụ đề, phông chữ, màu sắc, thanh tác vụ, độ phân giải màn hình, v.v. Nếu ai đó đã bật tiếng bíp đó, thì thường là vì lý do chính đáng. Một số loại khuyết tật, có lẽ. Tại sao bạn bật nó lên? –

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