2012-03-09 2 views
7

일반적으로 Alt 키는 Windows에서 메뉴를 엽니 다.Alt 키의 정상적인 작동을 비활성화하는 방법은 무엇입니까?

내 응용 프로그램에 Alt 키가 필요하기 때문에이 기능을 비활성화해야합니다. (오래된 컴퓨터의 에뮬레이터이기 때문에 그 동작을 모방해야합니다.) 순수한 Windows API로 작성 했으므로 보낸 메시지가 있어야하며 사용하지 않도록 설정하거나 무시하거나 무시해야합니다.

Alt + Tab은 다른 시스템 키와 키 조합과 마찬가지로 문제가되지 않으며 메뉴를 열 때 Alt 키를 무시하면됩니다.

는 (난 그냥 Alt 키와 메뉴를 여는 기능을 비활성화해야합니다. 내 응용 프로그램 키를 읽을의 DirectInput을 사용하므로 잘 작동합니다. 내가 마우스를 사용하여 메뉴를 엽니 다.) 확인에 대한

+0

어떤 메뉴인가요? 방금 Windows 상자에 Alt를 입력했는데 메뉴가 표시되지 않았습니다. – Kaz

+1

@Kaz : 포커스 된 창의 메뉴 막대에 포커스를 설정합니다. –

답변

10

방법 WM_SYSCOMMAND 일 때 wParam이 SC_KEYMENU이면 0을 반환합니다.

업데이트/정확한 솔루션 :

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

설명 : 0 또는 마이너스가 다음 메뉴가 Alt 키 또는 Alt + 무언가에 의해 활성화되는 경우 lParam>>16이 메뉴는 마우스로 활성화 한 후 긍정적 인 경우.

+0

올바른 솔루션을 찾는데 도움이되었습니다. 나는이 해답에 해결책을 추가했다. –

+0

나를 도왔습니다. 이 문제는 ALT 키와 Windows 8의 몇 가지 다른 키가 Win32 응용 프로그램과 계속 부딪히는 매우 심각한 문제였습니다. 또한 작은 설명을 주셔서 감사합니다. 필자가 필요로하지 않았기 때문에 lParam이나 wParam이 전에 사용 된 것을 결코 알지 못했습니다. –

관련 문제