title: How to eat keys in WM_KEYDOWN
body: <p>Im handling the <code>WM_KEYDOWN</code> message in an edit box.<br>
  I am handling a bunch of keys, but for certain keys (eg. tab) i'd like to prevent the displayable character from being appended to the editbox.  </p>
  
  <pre><code>case WM_KEYDOWN:
      {
          switch(wParam)
          {
          case VK_TAB:
              //handle tab here
              //Eat tab key
              return 0;
          default:
              return DefWndProc(hwnd,message,wParam,lParam);
          }
       }
       break;
  </code></pre>
  
  <p>I can detect and delete the tab in <code>WM_KEYUP</code> message, but with this method the tab key is visibly added and removed from the edit box.</p>
  
  <p>is there any way of eating a key in <code>WM_KEYDOWN</code>?</p>