title: What is the difference between MK_CONTROL and VK_CONTROL in Win32 API?
body: <p>What is the difference between MK_CONTROL and VK_CONTROL in Win32 API?</p>
  
  <p>Firstly, I checked the defined values.</p>
  
  <p>MK_CONTROL : 0x0008
  VK_CONTROL : 0x11</p>
  
  <p>Secondly, I tested in my simple code like this.</p>
  
  <pre><code>case WM_MOUSEMOVE:
      if(wParam &amp; MK_CONTROL)     // This works here.
          abort();
      if(wParam &amp; VK_CONTROL)     // This doesn't work here.
          abort();    
  
  case WM_KEYDOWN:
      if(wParam &amp; MK_CONTROL)     // This doesn't work here.
          abort();
      if(wParam &amp; VK_CONTROL)     // This works here.
          abort();    
  
  case WM_LBUTTONDOWN:
      if(wParam &amp; MK_CONTROL)     // This doens't work here.
          abort();
      if(wParam == VK_CONTROL)    // This doesn't work here.
          abort();
  </code></pre>
  
  <p>Does wParam value depend on the state of mouse device?</p>
  
  <p>What is the difference between MK_.. and VK_.. thing?</p>