title: CommandLineToArgvW quirk
body: <p>I have a little win32 program that calls <code>CommandLineToArgvW</code> with the given <code>lpCmdLine</code></p>
  
  <pre><code>int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
  {
    (void)hInstance;
    (void)hPrevInstance;
    (void)nCmdShow;
    int argc;
    LPTSTR* argv =  CommandLineToArgvW(lpCmdLine, &amp;argc);
    MessageBoxW(0, lpCmdLine, TEXT("lpCmdLine"), MB_OK    );
  
    for(int i=0; i&lt;argc;++i){
      MessageBoxW(0, argv[i], TEXT("argv"), MB_OK );
    }
    return 0;
  }
  </code></pre>
  
  <p>the strange thing that i observe is:</p>
  
  <ul>
  <li>if i call the program without parameter, the <code>lpCmdLine</code> is an empty string and <code>CommandLineToArgvW</code> returns 1 argument - the executable path.</li>
  <li>if called with parameter, <code>CommandLineToArgvW</code> returns the exact number of parameters, without the executable </li>
  </ul>
  
  <p>I could not find this strange behaviour documented.</p>
  
  <p>What did i miss? Do I use the command in an unintended way?</p>