2011-05-09 5 views
0

나는 첫 번째 메시지 상자를 받지만 두 번째 메시지 상자는 표시하지 않습니다. Ctrl + 을 함께 입력하십시오. 이 문제를 어떻게 해결할 수 있습니까?Ctrl + X 바로 가기 키를 처리하는 방법

case WM_KEYDOWN: 
    if (GetKeyState(VK_CONTROL) & 0x8000) { 
     MessageBox(0, "Ctrl", "Key", 0); 
     switch (wParam) { 
      case VK_RETURN: 
       MessageBox(0, "Enter", "Key", 0); 
       break; 
     } 
    } 
    break; 
+2

가속기로 키보드 작업을 처리해야합니다. –

+0

고마워요! 불행히도 여기에 받아 들여진 답을 표시 할 수는 없습니다 ... – Midas

+1

OK, 받아 들일 수있는 답변이 있습니다! 저는 여러분이 다른 방법을 받아 들일 수 있을지 확신하지 못했기 때문에 답으로 쓰지 않았습니다 - 모두가 아닙니다! –

답변

3

하위 수준의 키 누르기 이벤트를 처리하는 것이 아니라 가속기를 사용하여 이러한 키보드 동작을 처리하는 것이 가장 좋습니다.

1

가속기는 일반적으로 응용 프로그램 수준 명령에 사용됩니다. Ctrl-N을 눌러 새 문서를 엽니 다. 이 키 조합이 HWND과 관련된 경우 - 예 : 컨트롤 관련 키보드 명령 인 경우 컨트롤에서 처리하면됩니다.

코드에서 어떤 현상이 발생했는지는 다음과 같습니다. Ctrl + Enter를 누르면 Windows에서 두 개의 WM_KEYDOWN 메시지를 생성합니다. 하나는 CTRL이고 하나는 ENTER입니다. CTRL의 메시지 상자를 표시하면 메시지 상자가 표시되고 내부 메시지 루프가 인계 받아 해제 될 때까지 추가 입력이 이루어집니다.

첫 번째 MessageBox을 삭제 해보세요 (그 점을 어떻게 든 알 수 있습니다). 두 번째 것이 맞을 지 확인하십시오. 또는 입력을 방해하지 않는 진단 출력 기술 (예 : OutputDebugString())을 사용하십시오.

관련 문제