2014-12-27 2 views
0

Win32 API에서 MK_CONTROL과 VK_CONTROL의 차이점은 무엇입니까?Win32 API에서 MK_CONTROL과 VK_CONTROL의 차이점은 무엇입니까?

먼저 정의 된 값을 검사했습니다.

MK_CONTROL : 0x0008에 VK_CONTROL : 0x11을

둘째, 나는이 같은 내 간단한 코드에서 테스트.

case WM_MOUSEMOVE: 
    if(wParam & MK_CONTROL)  // This works here. 
     abort(); 
    if(wParam & VK_CONTROL)  // This doesn't work here. 
     abort();  

case WM_KEYDOWN: 
    if(wParam & MK_CONTROL)  // This doesn't work here. 
     abort(); 
    if(wParam & VK_CONTROL)  // This works here. 
     abort();  

case WM_LBUTTONDOWN: 
    if(wParam & MK_CONTROL)  // This doens't work here. 
     abort(); 
    if(wParam == VK_CONTROL) // This doesn't work here. 
     abort(); 

wParam 값은 마우스 장치의 상태에 따라 달라질 수 있습니까?

MK_ ..와 VK_ ..의 차이점은 무엇입니까?

+5

VK_CONTROL은 Ctrl 키의 가상 키 번호입니다. WM_KEYDOWN과 같은 키보드 메시지에서만 유효합니다. MK_CONTROL은 마우스 메시지에서만 유효합니다. 메시지가 생성 될 때 Ctrl 키가 눌러져 있음을 나타내는 플래그입니다. 클릭하는 동안 Ctrl 키를 누른 상태로 사용자를 감지하는 데 도움이됩니다. Ctrl + 클릭은 선택 항목을 확장하는 데 사용됩니다. –

+0

감사합니다. 이제 나는 이해했다! – Jenix

답변

2

wParam의 의미는 전송 한 메시지에 전적으로 달려 있습니다. 각 메시지의 문서는 해당 메시지에 대해 의미있는 값을 알려줍니다.

+0

Stokes에 감사합니다! – Jenix

관련 문제