title: What does the CALLBACK keyword mean in a Win-32 C++ application?
body: <p>Some function calls in Win-32 C++ applications have the <code>CALLBACK</code> keyword applied to them, as in this example (taken from <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms644996%28v=vs.85%29.aspx#modal_box" rel="noreferrer">this MSDN page</a>):</p>
  
  <pre><code>BOOL CALLBACK DeleteItemProc(HWND hwndDlg, UINT message,
                               WPARAM wParam, LPARAM lParam) 
  {
      // ... code here ...
  }
  </code></pre>
  
  <p>I see via Visual Studio that the <code>CALLBACK</code> keyword is defined (using <code>#define</code>) as <code>__stdcall</code>. The <a href="http://msdn.microsoft.com/en-us/library/zxk0tw93%28v=vs.80%29.aspx" rel="noreferrer">__stdcall documentation</a> doesn't make it much clearer (to me at least) what it does.</p>
  
  <p>In short, <strong>what does using <code>CALLBACK</code> do for me</strong>? Is it absolutely required, or can I leave that declaration off?</p>